Autor Beitrag
Christian V.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 311

Win Xp Prof
Turbo Delphi 2005
BeitragVerfasst: Fr 23.03.07 21:25 
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.

_________________
Hardware runs the world, software controls the hardware, code generates software - Have You already coded today?
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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.

_________________
Markus Kinzler.