Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   WideString-Dateinamen an Shellexecute übergeben (https://www.delphipraxis.net/74071-widestring-dateinamen-shellexecute-uebergeben.html)

messie 27. Jul 2006 18:02


WideString-Dateinamen an Shellexecute übergeben
 
Hallo,

ich renne mal wieder vor die TypeCast-Wand des BCB. Es gelingt mir nicht, ShellExecute einen Dateinamen zum öffnen zu übergeben. Der Dateiname kommt als Widestring an.
Eigentlich kann das doch nicht so schwer sein.... :cry:
Hat jemand einen Tipp?

Grüße, Messie

DGL-luke 27. Jul 2006 18:06

Re: WideString-Dateinamen an Shellexecute übergeben
 
ShellExecuteW

:)

EDIT: Da hat der BCB aber verdammt recht, wenn er dich den Widestring in Shellexecute(A) quetschen lassen würde, hättest du einen wunderbaren fehler in deinem Code, der die App komplett lahmlegt, aber ewig zum finden braucht... ;)

messie 27. Jul 2006 18:41

Re: WideString-Dateinamen an Shellexecute übergeben
 
Zitat:

Zitat von DGL-luke
EDIT: Da hat der BCB aber verdammt recht, wenn er dich den Widestring in Shellexecute(A) quetschen lassen würde, hättest du einen wunderbaren fehler in deinem Code, der die App komplett lahmlegt, aber ewig zum finden braucht... ;)

OT: Wäre schon schön, wenn der BCB bei den Fehlermeldungen etwas mehr von Delphi geerbt hätte. Da fühle ich mich ein wenig an die alten Turbopascal-Compiler erinnert....

Danke, Messie

himitsu 28. Jul 2006 11:30

Re: WideString-Dateinamen an Shellexecute übergeben
 
Für die, die es mal brauchen, wo wirklich ein anderer Type verlangt wird, also man zur Verfügung hat:

entweder über 'ne Zwischenvariable, oder einfach konvertieren ;)


Delphi-Quellcode:
Var MyStringW, W: WideString;
  MyStringA, A: AnsiString{String};

Procedure TestFunc (InPut: PAnsiChar{PChar}) External ... 'TestFuncA';
Procedure TestFuncA(InPut: PAnsiChar{PChar}) External ... 'TestFuncA';
Procedure TestFuncW(InPut: PWideChar)       External ... 'TestFuncW';

W := MyStringA;
TestFuncW(PWideChar(W));

A := MyStringW;
TestFunc(PChar(A));
TestFuncA(PAnsiChar(A));

TestFuncW(PWideChar(WideString(MyStringA)));

TestFunc(PChar(String(MyStringW)));
TestFuncA(PAnsiChar(AnsiString(MyStringW)));
Ansonsten macht es sich natürlich nicht schlwecht, wenn man die passende API verwendet :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz