Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi halt/exit/terminate/close (https://www.delphipraxis.net/79708-halt-exit-terminate-close.html)

Cöster 26. Okt 2006 20:27

Re: halt/exit/terminate/close
 
Zitat:

Zitat von Sunlight7
Nicht ganz verstehen. :gruebel:

Man kann Halt doch auch ohne Parameter aufrufen. Dann wird keine Message angezeigt. Wozu gibt's das?

Sunlight7 26. Okt 2006 20:37

Re: halt/exit/terminate/close
 
Das stammt IMHO noch von DOS zeiten, vergleichbar mit dem System-Befehl von Basic.

SirThornberry 26. Okt 2006 21:40

Re: halt/exit/terminate/close
 
Halt entspricht dem "Return" der Main-Funktion auch C
Man kann bei Halt also ein Returncode zurück geben welcher dann über Errorlevel abgefragt werden kann.
Somit haben andere Programme die Mögichkeit herauszufinden ob ein Programm ordentlich durchgelaufen wurde oder abgebrochen.
Dies wird zum Beispiel von Setup-Programmen genutzt welche andere Programme aufrufen. Liefert ein Programm welches vom Setup ausgeführt wird nicht das entsprechende Errorlevel zurück wird das ganze Setup abgebrochen etc.

Christian Seehase 26. Okt 2006 21:46

Re: halt/exit/terminate/close
 
Moin Zusammen,

also für mich ist in den meisten Fällen close der Befehl mit dem ich ein Programm beende.
Application.Terminate hat, für mich, den Nachteil, dass es das OnClose- und vor allem das OnCloseQuery-Event nicht aufruft.
Die werden zwar nicht immer benötigt, aber wenn doch muss ich mir anschliessend keine Gedanken darum machen, warum die genannte Events wohl nicht durchlaufen werden ;-)

Halt kommt bei mir eigentlich nur dann in Frage, wenn ich, wie Jens schon erläutert hat, ein Konsolenprogramm habe, dass über Errorlevel einen Rückgabewert hat.

SirThornberry 26. Okt 2006 22:00

Re: halt/exit/terminate/close
 
Mir fällt grad noch ein das bei Halt noch die "Finalization"-Abschnitte durchlaufen werden. Gibt es eine Variante wo dies nicht der Fall ist? Ich hab's bisher immer mit TerminateProcess gelöst wenn ich dies verhindern wollte was aber nicht die feine englische Art ist.

Rob09 31. Mai 2011 15:58

AW: halt/exit/terminate/close
 
Hi! Mal ne wichtige Frage:

Angenommen, ich erstelle irgendwo im Programm ne Menge Objekte und beende es irgendwann mit Halt. Sofern es nirgends unter finalization geschieht, werden diese Objekte ja nicht zerstört. Wird der Speicher unter Windows dann trotzdem freigegeben, nachdem das Programm mit Halt abgebrochen wurde? Bzw. wird nach dem Schließen/Abbrechen eines Programms nicht ohnehin sämtlicher Speicher (auch Speicherlecks), der durch dieses belegt wurde, freigegeben?

Beste Grüße!
Robert

Neutral General 31. Mai 2011 16:08

AW: halt/exit/terminate/close
 
Hallo Robert,

Wenn das Programm beendet wird, dann markiert Windows alle vom Programm verwendeten Speicherseiten wieder als frei.

Rob09 31. Mai 2011 16:10

AW: halt/exit/terminate/close
 
Vielen Dank für die schnelle Antwort, Neutral General! :thumb:

jaenicke 31. Mai 2011 16:23

AW: halt/exit/terminate/close
 
Probleme kann es z.B. bei gemeinsam genutzten DLLs geben. Ich weiß nicht, ob das für neue Windowsversionen auch gilt, aber zumindest bei XP noch wurden solche DLLs dann nicht mehr unbedingt entladen (wenn der Code zum entladen dann nicht mehr erreicht wird), weil die Referenzzählung durcheinander kam.

Unter anderem deshalb ist Halt nicht für produktive Anwendungen geeignet.

Namenloser 31. Mai 2011 16:39

AW: halt/exit/terminate/close
 
Zitat:

Zitat von Neutral General (Beitrag 1103952)
Hallo Robert,

Wenn das Programm beendet wird, dann markiert Windows alle vom Programm verwendeten Speicherseiten wieder als frei.

Allerdings nur unter Windows NT und den darauf basierende Versionen (Win2k, XP, Vista, Win7, …). Gut, heutzutage sollte das kein großes Problem mehr sein, aber falls doch noch jemand Programme schreibt, die unter Win9x laufen sollen, dann bitte beachten, dass Windows einem dort nicht hinterherräumt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz