Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
AW: Zugriff auf String^ (String pointer)
16. Feb 2017, 19:08
Ein String ist mehr als nur Text, gefolgt von einer #0.
Wobei Delphi-Strings die #0 eigentlich nicht brauchen, denn "vor" dem Text (also vor der Stelle des ersten Zeichens, auf die der interne String-Pointer zeigt) liegt noch eine Längenangabe, der Referenzzähler und die CodePage-Informationen.
Und hinter dem letzten Zeichen liegen noch zwei #0-en, als Kompatibilität und um "schnell" in einen PChar casten zu können.
Fazit: Als "String" kann man den Zeiger nicht einfach so verschieben.
Ein Cast von String zu PChar geht immer,
aber andersrum geht's nimmer (hier muß man eine neue String-Variable erzeugen und da rein den PChar-Inhalt kopieren).
Mit einem PChar kann man das problemlos machen (also von einem PChar aus oder Anfangs auch von einem String/AnsiString/UnicodeString oder WideString),
denn dort zeigt der Zeiger wirklich "nur" auf ein Zeichen und dann so lange, bis eine #0 gefunden wird.
$2B or not $2B
Geändert von himitsu (16. Feb 2017 um 19:12 Uhr)
|