Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Typumwandlung string -> PAnsiChar

  Alt 7. Mär 2012, 13:26
es zwar sowas änliches aber schlau werd ich da nicht draus.
Wenn die Daten nur im Unicodeformat vorliegen, dann kann man davon keinen Zeiger auf Ansi-Daten rausbekommen.

Delphi gibt dir hier zwar einen Zeiger darauf, aber warnnt dich, daß die Daten im "falschen" Format vorliegen.

Also entweder vorher in eine Stringvariable vom richtigen Typen umkopieren, oder

Delphi-Quellcode:
var
  s: UnicodeString;
  P: PAnsiChar;

p := PAnsiChar(AnsiString(s));
AnsiString(s) ist kein reiner Type-Cast, denn die Compilermgic legt hier eine temporäre AnsiString-Variable an, welche meistens bis zum Ende der Prozedur erhalten bleibt.
Und PAnsiChar zeigt dann in Wirklichkeit auf diese temporäre Varible, welche eine umgewandelte Kopie von S enthält.


Kommt nun darauf an, wie langlebig dieser Pointer sein muß.
Wenn es nur als direkter Parameter für einen einzigen Funktionsaufruf sein soll, dann gibt es absolut keine Probleme, aber wenn man sich z.B. an einer Stelle den Pointer besort und erst mehrere Codezeilen weiter unten diesen Pointer verwendet, dann wäre es sicherer, wenn man sich eine eigene AnsiString-Variable anlegt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat