Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Programmstarter


Apo95 - Mo 11.06.12 19:07
Titel: Programmstarter
Hallo, ich bin gerade dabei einen kleinen Programmstarter zu scheiben, hier der Code:


Delphi-Quelltext
1:
2:
3:
4:
        Timer1.Enabled :=true;
        ProgressBar1.Position :=Timer1.Interval;
        if ProgressBar1.Position =100 then
        SHELLEXECUTE (handle,'open','C:\Program Files (x86)\EA und SUMIT.de GmbH in Zusammenarbeit mit GG Berlin\ApoPlus Apothekensystem 2010\ApoPlus 1.0\ApoPlus 1.0 DELPHI2009\Apo.exe','','',SW_SHOWNORMAL);


// Sollte die EXE nicht gefunden werden, dann die unten stehende Fehlermeldung //


Delphi-Quelltext
1:
2:
        Application.MessageBox('Die Datei Apo.exe konnte nicht gefunden werden. Möglicherweise wurde die Datei umbenannt, verschoben oder entfernt. Installieren Sie das Programm'#13+
        'erneut, um Fehler zu beheben.','Datei nicht gefunden.',mb_ICONSTOP or mb_OK);

Irgendwie will mir der Befehl nicht einfallen...

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


Boldar - Mo 11.06.12 19:19

Du könntest einfach vorher mit fileexists schauen. Nebenbei hat Shellexecute [http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx] auch einen rückgabewert, den man auswerten könnte.
Desweiteren wird dein Code so nicht funktionieren:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Timer1.Enabled :=true;
ProgressBar1.Position :=Timer1.Interval;   //Hier meinst du sicher was anderes? Intervall ist die Wartezeit.
if ProgressBar1.Position =100 then  //// Der Timer wurde ja gerade erst gestartet, deshalb kann der timer die Progressbar noch nicht ungestellt haben
SHELLEXECUTE (handle,'open','C:\Program Files (x86)\EA und SUMIT.de GmbH in Zusammenarbeit mit GG Berlin\ApoPlus Apothekensystem 2010\ApoPlus 1.0\ApoPlus 1.0 DELPHI2009\Apo.exe','','',SW_SHOWNORMAL);

// Sollte die EXE nicht gefunden werden, dann die unten stehende Fehlermeldung //

Application.MessageBox('Die Datei Apo.exe konnte nicht gefunden werden. Möglicherweise wurde die Datei umbenannt, verschoben oder entfernt. Installieren Sie das Programm'#13+
'erneut, um Fehler zu beheben.','Datei nicht gefunden.',mb_ICONSTOP or mb_OK);

Warum überhaupt den Nutzer warten lassen??
Damit das cool aussieht?
Dann starte das Programm aus dem Timer, wenn die Progressbar durchgelaufen ist. Oder benutze eine schleife mit sleep und application.processMessages


Apo95 - Mo 11.06.12 19:51

Mit file exists habe ich noch nie gearbeitet...

Geht das so:

if fileExists('')=false ... ?

ich habe den Quellcode unter Timer1Create gesetzt.