Autor Beitrag
error
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Do 31.07.08 13:40 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 31.07.08 13:47 
Einen WideString zu PAnsiChar oder PChar casten geht nur über den Zwischencast nach String, also
ausblenden 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. ;-)

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

_________________
We are, we were and will not be.