Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Finde keinen Fehler (https://www.delphipraxis.net/5020-finde-keinen-fehler.html)

TheMiller 20. Mai 2003 18:40


Finde keinen Fehler
 
Hey Leute,
bin gleich mit den Nerven am Ende! Möchte ein Programm per Knopfdruck mit ShellExecute öffnen, wobei der Pfad für die Datei aus einer InI kommt. habe schon einmal Hilfe angefort und bekam eine Antwort, dass ich dem DateiPfad eine Variable geben soll, welche dann in Shell Execute angegeben wird.

Delphi-Quellcode:
uses ShellAPI;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var Pfad : String;
    Ini : TIniFile;
begin
Ini := TIniFile.create('C:\a.ini');
Try
Pfad := Ini.readstring('1','1',text);
Finally
FreeAndNil(ini);
ShellExecute(Handle, nil, 'Pfad', nil, nil, SW_SHOW);


end;
end;
end.
Das ist mein Code

Finde den Fehler nicht. Datei existiert, Prog startet, aber bei Klick auf Button tut sich nix... :evil:

Danke im Vorraus

lordcroc 20. Mai 2003 18:46

versuch mal deine Variable ohne Häcken beim Shellexecute.
die häcken bewirken das alles was dazwischen ist als een string interpretiert wird.
im momement versuchst du eine Datei Namens: Pfad zu starten

Veruchs mal mit:

ShellExecute(Handle, nil, Pfad, nil, nil, SW_SHOW);

TheMiller 20. Mai 2003 18:49

geht leider auch nicht

Duffy 20. Mai 2003 19:00

Hallo DJ-SPM,
versuchs mal so
Delphi-Quellcode:
ShellExecute(0, nil, PChar(Pfad), nil, nil, SW_SHOW);
bye

TheMiller 20. Mai 2003 19:05

Hey Duffy,

mein Retter in Not. Es funzt!!!!! Klasse, BigTHX!!!

CalganX 20. Mai 2003 20:27

Hi,
ist genaugenommen immer noch ein wenig falsch: du sagst ShellExecute nicht was du eigentlich tun willst.
Korrekt wäre daher:
Delphi-Quellcode:
ShellExecute(Handle, 'open', PChar(Pfad), nil, nil, SW_SHOW);
Aber das ist eigentlich nur kleinschei***ei... ;)

Chris

Tom 20. Mai 2003 23:53

Zitat:

Zitat von Chakotay1308
Korrekt wäre daher:
Delphi-Quellcode:
ShellExecute(Handle, 'open', PChar(Pfad), nil, nil, SW_SHOW);

Der PSDK sagt dazu
Zitat:

...
lpOperation
...
NULL
For systems prior to Microsoft® Windows® 2000, the default verb is used if it is valid and available in the registry. If not, the "open" verb is used.

For Windows 2000 and later systems, the default verb is used if available. If not, the "open" verb is used. If neither verb is available, the system uses the first verb listed in the registry.
Korrekt ist demnach für EXE-Dateien 'open' oder nil. Für normale Dateien ist auf jeden Fall nil korrekt, da es nicht für jede registriete Dateiendung den Registryeintrag ...Shell\Open\Command gibt. Auch diese Dateien können mit ShellExecute "gestartet" werden, sofern man nicht 'open' sondern nil angibt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.

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