Zitat von
gmc616:
Bei mir hat das geholfen:LPAnsiChar1:=PAnsiChar(AnsiString(LString));
Theoretisch ja, denn hier wandelst du den UnicodeString in einen AnsiString und erzeugst davon einen Pointer.
Praktisch ist es aber unpraktisch, da man so keine richtige Kontrolle über die temporär erzeugte delphi-interne AnsiString-Variable hat.
Heißt, du hast keine wirkliche Kontrolle darüber, wann Delphi den AnsiString freigibt und wann somit der Pointer darauf ungültig wird.
Sicherer wäre also Folgendes, denn hier kannst du bestimmen wann MyTempStr freigegeben wird.
Delphi-Quellcode:
var MyTempStr: AnsiString;
MyTempStr := AnsiString(LString);
LPAnsiChar1 := PAnsiChar(MyTempStr);
Selbiges gilt für Alles, wo man keine Konrolle über das Ergebnis besitzt.
Delphi-Quellcode:
var MyTempStr: AnsiString;
MyTempStr := LString+' -Param1';
LPAnsiChar3 := PAnsiChar(MyTempStr);