Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Ich übersetz grad wieder Extensions, und da komm ich einfach ned drauf, was ein "null-terminated string" (€ und ein "null-terminated character") ist, und wie man das am besten übersetzt. Das wär eigtl alles (kurz und bündig)
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Ok, wenn ihr meint, dass man das so schreiben kann! War mir da ned so sicher.
btw, was bedeutet das?
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2067
Programmiersprache: C++
Strings in C sind einfache Arrays von Char.
Du bekommst einen Pointer auf den ersten Eintrag, der letzte ist 0.
Daher Null terminierter String und auch PChar.
Unter Pascal steht im ersten Wert eines Strings die Länge drinnen.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Ok danke für die Erklärung. Ich nehme dann mal "null terminierter String" weil das meines Meinung nach am besten passt und anscheinend nur bei mir Verwirrung hervorruft
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: So Sep 26, 2004 05:57 Beiträge: 190 Wohnort: Linz
Um das mal etwas technischer zu erläutern:
Prinzipiel gibt es 2 Möglichkeiten wie du einen String darstellen kannst:
1. Du sagst zu Beginn wie lang der String ist, also beispielsweise:
String ist 5 Zeichen lang, "Hallo"
hier hast du praktisch ein Byte das die länge angibt (der Wert davon ist 5) und 5 eigentliche Zeichen, also das "Hallo". Ein kleineres Problem bekommst du allerdings wenn du plötzlich Strings haben willst die länger als 255 Zeichen sind. Dann ist eine 1-Byte Längenangabe nicht mehr ausreichend und man muss sich Alternativen suchen. Die Alternativen sind hierbei ziemlich vielfältig, aber alle erfordern eine Sonderbehandlung. Und diese Sonderbehandlung ist bei OGL nicht erwünscht.
2. Du sagst der String soll ein String sein, aber ein bestimmter Wert soll den String terminieren, also sagen das der String hier zu ende ist.
Vorteil davon ist, dass du einen String haben kannst der beliebig lang ist, also auch einen der ein paar MB groß ist. Nachteil ist natürlich, dass du die Länge eines String erst ausrechnen musst, und das ein Zeichen für die Terminierung reserviert werden muss. Da man aber ohnehin keine 255 Zeichen braucht lässt sich leicht ein Terminierungszeichen finden, welches im Falle von C/C++ üblicherweise der Wert 0 ist. Also der String von vorhin würde so aussehen:
Hallo0
Wie du siehst brauchen wir hier keine Längenangabe, aber das zusätzliche "Zeichen" 0.
Soweit ich in Erinnerung habe benuzt man bei Pascal die 1. Mathode. Da die 2. Methode jedoch "allgemeiner" ist (bzw. keine Ausnahmefälle mit sich bringt) benutzt man bei OGL die 2tere. Soll jetzt aber nicht heißen, dass die 2. besser ist, die 1. Methode hat auch genug Vorteile. Im Gegenteil, bei einem größeren C++ Programm wirst du dir meistens auch eine String-Klasse schreiben welche die 1. Methode verwendet. Kommt natürlich auf den Anwendugsfall drauf an, aber vor allem für's Laden und Speichern ist 1ere Methode doch etwas besser.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Wow danke für die Erklärung. Damit sind alle Fragezeichen weg
Ich hatte nur erst vermutet, dass das null evtl mit nil zu übersetzen sei, da null ja eigentlich kein englisches Wort ist, bzw war mir das bis dahin nicht bekannt, dass es alternativen zu zero und o (ou, wie auch immer) gibt. Und an vielen Stellen, an denen in C ein null (NULL) auftaucht, verwendet man in Delphi ja ein nil.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Unter Delphi ist die 1. Methode ein ShortString. Der "normale" String ist eigentlich nichts anders als ein Dynamischer Array vom Typ Char. Nur halt mit der Zusaetzlichen Eigenschaft das man ihm im Quelltext Zeichenfolgen zuweisen kann und das man sie addieren kann.(oder geht das auch normalerweise mit dynamischen Arrays?)
Bei dynamischen Arrays geht Delphi uebrigens sehr Ressourcen schonend um. Wenn man einer String Variable den Wert einer andern String variable zuweist so wird diese intern nicht kopiert, sondern nur vermerkt das der String von 2 Variablen aus genutzt wird. Erst wenn man den String einer Variable abaendert wird der String tatsaechlich kopiert.
Ach ja Delphi Strings haben am Ende auch eine Null, jedoch ist die Laenge zusaetlich auch noch in einem vorzeichenlosen Integer gespeichert. (Das heist ein String darf maximal 2 hoch 32 Zeichen lang sein)
MfG
Flo
_________________ Danke an alle, die mir (und anderen) geholfen haben. So weit... ...so gut
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Man sollte vileicht noch sagen das in der Anwendung der null terminierte string langsamer ist als der von delphi bekannte string, da beim pChar eine prüfung jedes Zeichen auf #0 statt findet während string am anfang schon die länge erfährt und nur noch die folgende zeichenanzahl kopiert. Man kann auch String[0] machen um die länge zurück zu bekommen und muss nicht erst length(string) machen schreiben geht aber nicht nur readonly. Ein normaler String kann 255 Zeichen lang werden wobei dem pChar keine theoretische grenze auferlegt ist und wie schon geahnt gibs von String mehere varianten mit 1Byte,2Byte und 4Byte für die Charanzahl.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2621 Wohnort: Berlin
Programmiersprache: Go, C/C++
Wärend ich mit Hilfe des Wikis angefangen habe eine Softwarebased OpenGL zu basteln fiehl mir folgendes auf
http://wiki.delphigl.com/index.php/GluPerspective dort ist die formel zur berechnung der matrix falsch so ist es richtig hatte mich gewundert wieso meine routine ne andere matrix als die von opengl hatte.
Könnte das mal einer ändern ?
Registriert: So Sep 26, 2004 05:57 Beiträge: 190 Wohnort: Linz
Also für mich sehen die beiden Matrizen und auch deine Implementierung genau gleich aus ... denn
cotan( fovy/2 ) = cos( fovy/2 ) / sin( fovy/2 )
wo bei deiner Implementierung der Sinus verwendet wird, um auf einen Winkel von exakt 180 Grad zu prüfen. Und
-(zfar+znear)/deltaZ = -(zfar+znear)/(zfar-znear) = (zfar+znear)/(-(zfar-znear)) = (zfar+znear)/(znear-zfar)
gleiches für die 4. Spalte.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Übersetze grad die Artikel, die zur glColorTable-Serie gehören. Da kommt immer wieder der Begriff "color lookup table". Ich hab das bisher mit Farb-Lookup-Tabelle übersetzt. Ich find aber, dass das sich grausam anhört, deswegen mal die Frage, ob jemand von euch ne Alternative weis.
btw noch ne Wissensfrage: Zu was sind diese Funktionen überhaupt da? Also mi ist schon klar, dass glColorTable eine Tabelle mit Farb-Informationen erzeugt, aber für was um alles in der Welt braucht man denn das?
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Mitglieder in diesem Forum: 0 Mitglieder und 17 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.