Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
AW: string mit postmessage übermitteln?
14. Apr 2017, 10:53
Nein, es sind keine aufgekotzten PChars.
Es sind aufgemotzte dynamische Char-Arrays. array of char
Delphi verwendet die Längenangabe, aber als Kompatibilität zeigt der interne Pointer nicht auf den Anfang der Steuerdaten, sondern dahinter, und hinter dem letzten Zeichen werden im Speicher noch zwei #0 abgelegt.
So kann der String-Pointer direkt als PChar verwendet werden (zum Lesen).
Der ShortString (der String aus Delphi 1 und davor) ist ein Record, mit einem LängenByte und drauf folgenden Chars.
Char 1 war auf BytePosition 1 und das Längenbyte auf BytePosition 0 ... darum sind Strings auch mit 1 indexiert, obwohl dort das erste Char auf BytePosition 0 liegt
und die Steuerdaten (Länge, Refernzzählung und seit 2009 auch CharSize und CodePage) davor liegen.
$2B or not $2B
Geändert von himitsu (14. Apr 2017 um 11:08 Uhr)
|