Entwickler-Ecke

Windows API - PChar und WideStrings


error - Do 31.07.08 13:40
Titel: PChar und WideStrings
Moin,

ich habe ein Programm, in dem ich WideStrings für Ordner- und Dateinamen und andere Benutzereingaben benutze, damit auch Dateien mit Sonderzeichen akzeptiert werden. Das scheint auch soweit zu laufen, aber nun möchte ich diese Dateinamen als Parameter an ein anderes Programm von mir übergeben. Damit sie in ShellExecute benutzt werden können muss ich sie ja anscheinend zu PChar bzw. PAnsiChar casten.

Meine Fragen dazu:

1) Ist WideStrings zu benutzen überhaupt "richtig" oder gibt es einen besseren Weg?
2) Kann ShellExecute mit WideStrings/PAnsiChars umgehen?
3) Ist PAnsiChar überhaupt der richtige Typecast?

Wäre schön, wenn mir das wer beantworten könnte, denn ich werde aus der Hilfe nicht so ganz schlau.


Gausi - Do 31.07.08 13:47

Einen WideString zu PAnsiChar oder PChar casten geht nur über den Zwischencast nach String, also

Delphi-Quelltext
1:
MeinPChar := PChar(String(MeinWideString));                    


Das bringt dir aber nichts, weil dabei natürlich "echte" Widestrings kaputt gehen. Shellexecute kommt nicht mit WideStrings bzw. PWideChars klar. Aber - wie bei fast allen Api-Funktionen - kann man ein W dranhängen, um die entsprechende Widestring-Variante zu erhalten. ;-)


Delphi-Quelltext
1:
ShellExecuteW(...weiter wie ohne W, nur mit PWideChars anstelle von PChar...)