Einzelnen Beitrag anzeigen

Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#26

AW: ShellExecution Brauche Hilfe

  Alt 20. Apr 2019, 22:51
[Teilweise OT]

Auch wenn der Typ PChar automatisch nach PWideChar gecastet wird ist trotzdem PWideChar der richtige DatenTyp nicht PChar.
Ist er nicht. Warum? Wenn man ShellExecute verwendet, nimmt man PChar, bei ShellExecuteA nimmt man PAnsiChar und bei ShellExecuteW nimmt man PWideChar. Nur so funktioniert es in allen Delphi-Versionen. Ich frag mich wirklich, warum dieser Fehler bzw. die Diskussion dazu immer wieder auftaucht. Konkrete Typen (Ansi/Wide) sollte man ausschließlich dann verwenden, wenn die Funktionen bzw. deren Datentypen das verlangen, z.B. weil es nur eine Definition davon gibt. Konkretes Beispiel: MSDN-Library durchsuchenMapAndLoad() gibt's nur mit Ansi.

[/OT]

Zum Thema: Auch ich kann nur deutlich davon abraten, an der Zwischenablage zu fummeln. Die Zwischenablage gehört dem Benutzer, nicht irgendeinem Programm! Da hilft es auch wenig, wenn der Inhalt der Zwischenablage vorher gesichert und hinterher wiederhergestellt wird. Sowas ist einerseits schlechtes Design, und bei Verwendung von Multi-Clipboard-Programmen (wie z.B. ArsClip bei mir) fällt sowas ganz besonders negativ auf.

Stattdessen wäre es viel besser, den Inhalt direkt zu übergeben und in den Parameterstring für ShellExecute einzubauen.

Es gibt übrigens noch weitere Probleme mit dem Ansatz: Was ist mit Umlauten und Sonderzeichen? Stichwort Zeichensatzkodierung. Ich weiß nicht genau, wie das mit Leerzeichen ist, ob die auch speziell kodiert werden müssen (%20) - dafür gibt's bestimmt auch einen Fachbegriff.

Grüße
Dalai
  Mit Zitat antworten Zitat