Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Stringverwaltung / Ansistring

  Alt 1. Jun 2018, 11:46
AnsiString und UnicodeString und Ableitungen von AnsiString ala RawByteString und UTF8String sind LongStrings (die Technik)
WideString ist ein OLEString.
Der Typ String[x] und ShortString sind ShortStrings.

ShortString = Record (LängenByte in [0] und dahinter die Chars)
LongString = dynamisches Array mit ein paar Addons, wie implizit zwei Char #0 inher dem String und die Codepage wird auch gespeichert (Pointer auf die String-Verwaltungsstruktur)
OLEString = siehe BSTR und MSDN-Library durchsuchenSysAllocStringLen


PS: Die genauen Definitionen kann man sich in der System.pas ansehen und inzwischen wird das sogar in der OH gut beschrieben.

MakeStr ist ein Graus.
Bei weniger als 2 (genauer bei Len=1) knallt es nur zufäälig nicht, wegen der zusätzlichen zwei #0 im String, aber du zerstörtst/überschreibst damit diese Verwaltungsdaten, welche für Casts nach PChar existieren.
Und bei Len=0 knallt der Aufruf definitiv, da ein Leerstring NIL ist und keine Verwaltungsdaten besitzt, in die du reinschreiben könntest.



Zitat:
ich möchte keine Diskussion über Nutzen/Zweck/Sinnhaftigkeit etc. des QT erzeugen
Warum nicht?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 1. Jun 2018 um 11:50 Uhr)
  Mit Zitat antworten Zitat