![]() |
Programm selbst beenden
Hallo,
aufgrund von Exceptions oder sonstigen Fehlern im Programm möchte ich aus dem Programm heraus selbiges selbst beenden. Ich habe es schon versucht mit
Code:
oder auch mit
MainForm.Close;
Code:
und auch mit beidem.
Application.Terminate;
Sie führen zwar dazu, das das Programm beendet wird, doch führen Sie zunächst noch die übergeordneten Routinen aus in denen Sie aufgerufen wurden. und auch ein
Code:
sprengt nur die aktuelle routine, nicht die übergeordnete !
exit
=> Dies führt aber unweigerlich zu weiteren Exeptions und möglicherweise zu Datenbank-Inkonistenzen. Daß die From-Close Routine ausgeführt wird ist gewollt und gut aber dann soll das Programm auch beendet sein !!! Wie kann ich das verbessern ? Ich bin echt ratlos.... :gruebel: :gruebel: Hoffe ihr könnt mir helfen und "laßt mich nicht dumm sterben" :? grüsse hacki |
Re: Programm selbst beenden
Moin!
Exit kann man zwar benutzen, aber man sollte versuchen ohne auszukommen. Ansonsten musst du dein Programm einfach so aufgebaut werden, dass die anderen Prozeduren gestoppt werden. Eine Möglichkeit wäre mit einer globalen Variable (boolean) zu speichern ob das Programm weiterlaufen soll oder abgebrochen wird. Dann kannste in den übergeordneten Prozeduren nach Aufruf der Unterprozedur, die MainForm.Close oder so enthält überprüfen ob weitere Befehle ausgeführt werden sollen oder nicht und je nach dem dann entscheiden was passiert. Ich hoffe ich hab etwas verständlich geschrieben :mrgreen: MfG Niels |
Re: Programm selbst beenden
Hi Niels,
danke erstmal für deine Hinweise Zitat:
Mit einer logischen Variable zu arbeiten finde ich in einem großen Prog nicht praktikabel, da Du jede Anweisung dann in Abhängigkeit von dieser Variblen ausführbar machen muß, sprich unendlich viele IF - Konstrukte bilden mußt !!! TERMINATE und CLOSE beenden das Programm ja, allerdings nicht sofort !!! Ich möchte aber nicht, das weitere Operationen ausgeführt werden :wall: Ich hoffe, da gibt's noch ein paar Tricks :idea: grüsse hacki |
Re: Programm selbst beenden
Zitat:
MfG DevStar |
Re: Programm selbst beenden
Hi,
ne totsichere Methode ist :
Delphi-Quellcode:
SendMessage(handle,WM_Close,0,0);
|
Re: Programm selbst beenden
Joah aba soweit ich weiß werden die Nachrichten doch erst nacheinander abgearbeitet, wenn er jetzt ne Fkt hat die das ganze Prog auslastet könnte das doch taaauuuusend Jahre (in etwas übertriebener Darstellung ;) ) dauern bis das Prog sich schließt.
|
Re: Programm selbst beenden
Hi,
jup richtig nur tuen eure Vorschläge alle nix anderes ... meine ist der direkte Weg über die API eure machen noch nen kleinen Umweg über die Borland VCL. Dauern kann alles ... dazu brauche man die ProcessMessages. |
Re: Programm selbst beenden
Zitat:
|
Re: Programm selbst beenden
Zitat:
|
Re: Programm selbst beenden
hi Lucki,
ich bin zwar grundlegend deiner meinung, dennoch können operationen wie beispielsweise der batchmove aus irgendwelchen gründen auf dem zielrechner fehlschlagen - diese ursachen kann man nur bedingt abfangen und bearbeiten. da das prog nur weiter gestartet werden kann, wenn die datenumsetzung hingehauen hat und ich zudem noch mehrere tabellen geöffnet halte schreibe ich ein wiederaufsetz und fehlerprotokoll und beende das programm => Das Fortfahren mit dem Programm führt unweigerlich zu Folgefehler, da z.b. auf Felder zugrgriffen wird die vor der umsetzung nicht vorhanden waren !!! => Ein Analysieren und späteres Neu starten des Progs ist am sichersten. Kennt jemand die genauen Exceptions beim Batchmove oder wißt ihr wo ich Dokumentationen finden kann ?? greetings hacki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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 by Thomas Breitkreuz