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.