Autor Beitrag
Apo95
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129

Win2000, WinXP, WinServer 2003 Standard x86, Win7x64
Delphi 6 Enterprise, D2009 Architect, RAD Studio XE6 Architect
BeitragVerfasst: Mo 11.06.12 19:07 
Hallo, ich bin gerade dabei einen kleinen Programmstarter zu scheiben, hier der Code:

ausblenden 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 //

ausblenden 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

_________________
Lette-Verein MIA
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mo 11.06.12 19:19 
Du könntest einfach vorher mit fileexists schauen. Nebenbei hat Shellexecute auch einen rückgabewert, den man auswerten könnte.
Desweiteren wird dein Code so nicht funktionieren:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129

Win2000, WinXP, WinServer 2003 Standard x86, Win7x64
Delphi 6 Enterprise, D2009 Architect, RAD Studio XE6 Architect
BeitragVerfasst: 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.

_________________
Lette-Verein MIA