Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Strings
Christian V. - Fr 23.03.07 21:25
Titel: Strings
Hallo,
Ich bin im moment daran mir Assembler beizubringen, damit ich ein wenig besser verstehen kann, was der Computer genau macht, und was sich hinter den Befehlen von Delphi versteckt.
Die Strings terminiert man ja mit NUL.(So stehts jedenfalls im Buch). irgendwie bin ich dann mal bei Wikipedia gelandet, und da steht, dass C das auch so macht, Delphi jedoch mit einer Längenangabe von 31 Bit in den ersten 2 Bytes.
Nun zu meiner Frage: Weshalb 31 bit? Ich schliesse daraus, dass da Integer verwendet werden, also signed. doch wozu signed? Wer braucht schon eine Negative Längenangabe?
Frage 2: Weshalb werden Strings NUL-terminiert? Das muss doch ein Geschwindigkeitsverlust sein, wenn ich in einer Schleife mit Strings arbeite, und immer die Länge abfrage.
mkinzler - Fr 23.03.07 21:40
Klassische Pascal-Strings haben im ersten Byte die Länge kodiert und können deshalb nur maximal 255 Zeichen lang sein. Solche Strings haben in Zwischenzeit den Typ
ShortString. Daneben gibt es auch noch den Typ
AnsiString, für den es keine Längenbeschränkung gibt. In der Standardeinstellung entscheidet Delphi beim Typ
String, welchen Typ genommen wird.
Zitat: |
Frage 2: Weshalb werden Strings NUL-terminiert? Das muss doch ein Geschwindigkeitsverlust sein, wenn ich in einer Schleife mit Strings arbeite, und immer die Länge abfrage. |
So ist die Länge variabel.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!