Autor Beitrag
X-Cape
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Prof.
Delphi 7 PE
BeitragVerfasst: Mi 04.01.06 12:14 
Hi zusammen,
ich möchte zum Beispiel eine Hilfedatei ausführen, und wenn diese durch ShellExecute nicht ausgeführt werden konnte eine MessageBox ausgeben lassen. Wie geht das denn genau?
Danke für euren Support!

X-Cape
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 04.01.06 12:23 
Shellexecute liefert einen Zahlenwert zurück, der Auschluss darüber gibt, ob etwas schiefgelaufen ist, und wenn ja, was schief gelaufen ist. Genauer nachlesen kann man das bei MSDN.
IIRC kann man mit if shellexecute(...) < 32 then showmessage('Ups, da is was nich in Ordnung'); das Gröbste erledigen.

_________________
We are, we were and will not be.
X-Cape Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Prof.
Delphi 7 PE
BeitragVerfasst: Mi 04.01.06 12:37 
Titel: Programmcode
Das wird wahrscheinlich bei "normalem" ShellExecute funzen, aber ich möchte den Pfad der Hilfedatei aus einer INI lesen.

Dafür hab ich folgendes geproggt:

procedure TMainForm.HelpMenuClick(Sender: TObject);
begin
ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Launcha II.ini');
if ShellExecute(Handle,'open',PChar(ini.ReadString('Help','Path','')),nil,nil,SW_MAXIMIZE) < 32 then MessageBox(handle,'Ups, da is was nich in Ordnung','ShellExecute-Fehler',MB_ICONSTOP)

end;

Es ist natürlich möglich das keine Hilfe in der INI eingetragen ist, wie kann man das berücksichtigen??

X-Cape
Einloggen, um Attachments anzusehen!
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.01.06 12:44 
Ich würde einfach vor ShellExecute mit ReadString prüfen ob ein Wert eingetragen wurde.

Gruß Frank
X-Cape Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Prof.
Delphi 7 PE
BeitragVerfasst: Mi 04.01.06 12:47 
Titel: Code
Also so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TMainForm.HelpMenuClick(Sender: TObject);
begin
   ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Launcha II.ini');
if not (ReadString('Help','Path','')='') then
  if ShellExecute(Handle,'open',PChar(ini.ReadString('Help','Path','')),nil,nil,SW_MAXIMIZE) < 32 then MessageBox(handle,'Ups, da is was nich in Ordnung','ShellExecute-Fehler',MB_ICONSTOP);
end;


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
X-Cape Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP Prof.
Delphi 7 PE
BeitragVerfasst: Mi 04.01.06 12:59 
Titel: Der grosse AHA-Effekt
Jetzt hab ich es:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TMainForm.HelpMenuClick(Sender: TObject);
begin
   ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'Launcha II.ini');
if (ini.ReadString('Help','Path','')='') then
 MessageBox(handle,'Der Hilfepfad konnte nicht gefunden werden','INI-Fehler',MB_ICONWARNING)
else
 if ShellExecute(Handle,'open',PChar(ini.ReadString('Help','Path','')),nil,nil,SW_MAXIMIZE) < 32 then MessageBox(handle,'Ups, da is was nich in Ordnung','ShellExecute-Fehler',MB_ICONSTOP);
end;


Wurd auch ma Zeit? ;)

Thx, X-Cape

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt