![]() |
Programm ohne Umwege beenden
Hi,
ich möchte mein Programm während des Starten unter bestimmten gerne umgehend beenden. Also eigentlich Application.terminate. Allerdings scheint dass nicht sofort zu wirken, sondern lässt den OnFormCreate Prozess weiterlaufen und auch die OnFormDestroy Procedure (und dadurch natürlich auch noch OnFormResize^^) nimmt es noch nicht. Gibt es da einen Weg das alles zu umgehen? Kann ich nicht einfach meinen Prozess selbst abschießen? |
Re: Programm ohne Umwege beenden
Warum startest du ihn denn erst, wenn er nicht starten soll?
|
Re: Programm ohne Umwege beenden
Der Befehl "Halt()" beendet sofort, denk ich.
|
Re: Programm ohne Umwege beenden
Hi,
Man kann es IMHO vor Erzeugung des Hauptformulares beenden:
Delphi-Quellcode:
So mache ich es mit den LoginDialog...
begin
Application.Initialize; if ProgrammAbbruch then begin Application.ProcessMessages; // Achtung, sonst Exception, wird nicht ganz fertig Application.Terminate; end else begin Application.CreateForm(TFRMMain, FRMMain); Application.Run; end; end. Frank |
Re: Programm ohne Umwege beenden
Auch wenn HALT sofort wirkt, so entspricht dieses in etwas dem, als wenn man das Programm über den Taskanager einfach abschießen würde
und dieses ist nunmal nicht unbedingt ein idealer Weg. Also, wie Luckie und Co. schon sagten: Wenn etwas nicht gemacht werden soll, dann fang erst garnicht damit an. (das gilt besonders für Programmabbruchbedingungen, welche viele in OnCreate der Form einbauen ... da ist man ja schon mitten im Starten)
Delphi-Quellcode:
begin
if not ProgrammAbbruch then begin Application.Initialize; Application.CreateForm(TFRMMain, FRMMain); Application.Run; end; end. |
Re: Programm ohne Umwege beenden
kann ich an der Stelle ProgrammAbbruch auch auf Funktion des zu erstellenden Formulars zugreifen und einen ProgressDialog für einen Download anzeigen?
|
Re: Programm ohne Umwege beenden
Du willst auf etwas zugreifen, was es noch gar nicht gibt? Irgendwie kann ich Deinen Gedankengängen nicht folgen.
|
Re: Programm ohne Umwege beenden
Zitat:
|
Re: Programm ohne Umwege beenden
Ich versuch mal mein Problem genauer zu erklären:
Also ich habe ein kleines einfaches Programm und hab da jetzt just for fun eine Update Funktion eingebaut. Die Updatefunktion funktioniert wie folgt: 1. falls vorhanden neue exe Datei downloaden 2. eine bat-Datei schreiben/starten und das Programm beenden 3. bat-Datei überschreibt exe Datei mit neuer exe Datei und startet dieses -> funktioniert so weit Nun würd ich gern beim Programmstart diese Funktion aufrufen, falls der Bool AutoUpdate in der ini Datei auf falls steht. Für den Fall den Fall das AutoUpdate auf false steht, soll er normal starten. Steht AutoUpdate auf true, wird wie gesagt die Update Funktion aufgerufen. Falls sie keine Updates findet, kann das Programm ebenfalls normal starten. Sind Updates vorhanden, sollen die Update Funktion diese wie oben genannt runterladen, das Programm beenden bzw. garnicht erst starten. Nun die Frage wie macht man das ordentlich? Kann ich das alles einfach in den Quelltext vom Projekt hauen?
Delphi-Quellcode:
function FindUpdates: Boolean
var ini: TIniFile;
begin ini := TIniFile.Create(Path + '\settings.ini'); if ini.ReadBool('Settings','AutoUpdate',false) then if FindUpdates then if DownloadUpdates then Exit; ini.free; Application.Initialize; Application.CreateForm(TFRMMain, FRMMain); Application.Run; end. => gibt true zurück wenn es eine aktuellere Version gibt function DownloadUpdates: Boolean => gibt true zurück wenn Download erfolgreich war Und wo müsste ich jetzt die Funktion FindUpdates und DownloadUpdates deklarieren? |
Re: Programm ohne Umwege beenden
Zitat:
Du hast doch recht ordentlich beschrieben wie Du nach Updates suchst und sie ggf. installieren willst. Ich würde es so machen, daß Du mit zwei .BAT oder .CMD Dateien arbeitest. Eine die den "normalen" Programmaufruf und den Updateaufruf enthält. Wenn's keine Updates gibt steht in der Update.Bat nur ein REM oder sonst ein Platzhalter. Gibt es ein Update, dann werden in die Update.Bat alle notwendigen Befehle eingetragen und am Schluß wird Dein Programm wieder aufgerufen (nicht vergessen die Update.Bat wieder zu leeren). Das war's. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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