Thema: Delphi frage zu strings+Char

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: frage zu strings+Char

  Alt 3. Aug 2003, 00:10
Moin Zusammen,

@Silent:
Bei einem HugeString befindet sich auf den Bytes -8 bis -5 der Referenzzähler, und auf -4 bis -1 das Längenfeld des Strings (Werte relativ zu der Adresse in sHuge)
Deshalb -4, da dann auf das niederwertigste Byte des Längenfeldes adressiert wird.

Offsets relativ zu der Adresse in sHuge:
(Wert darunter in Hex, bezogen auf das Beispiel)

Code:
Referenzz. |Länge       | Inhalt
-8 -7 -6 -5 | -4 -3 -2 -1 |  0  1  2  3  4  5  6
FF FF FF FF | 05 00 00 00 | 30 31 32 33 34 35 00
Hier hat der Referenzzähler den Wert -1, da sHuge direkt eine Stringkonstante zugewiesen wurde (sHuge := '01234'). Diese haben immer den Referenzzähler -1, da sie ihren Wert nicht verändern.
Wichtig ist hierbei noch, dass die bei Intel übliche Speicherreihenfolge Verwendung findet, also das niederwertigste Byte zuerst, das höchstwertigst zuletzt. Deshalb steht die 5 auf Offset -4.
Würdest Du also bei meinem Beispiel -5 statt -4 schreiben, müsste als Ergebnis 1535 (dezimal) herauskommen.

Code:
-5 -4 -3 -2
FF 05 00 00 => 000005FF Hex => 1535 Dez
und bei -3

Code:
-3 -2 -1  0
00 00 00 30 => 30000000 Hex => 805306368 Dez
@Duffy:
Das ist natürlich richtig, aber ich finde, dass es nicht schaden kann mal auf die Unterschiede der Stringtypen einzugehen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat