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.