Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Application.Terminate die nette Option? (https://www.delphipraxis.net/164751-application-terminate-die-nette-option.html)

Johannes013 28. Nov 2011 16:31

Application.Terminate die nette Option?
 
Hi Leute! :)

Wenn ich von einer anderen Unit aus das Programm beenden will, so wie es sonst mit dem X-Button funktioniert, ist die nette Variante Application.Terminate?

Das hört sich irgendwie so aggressiv an :)

Gruß Johannes

shmia 28. Nov 2011 16:53

AW: Application.Terminate die nette Option?
 
Application.Terminate ist relativ "nett", denn die Anwendung schickt sich
selbst eine Windows Quit Message (WM_QUIT).

MSDN-Library durchsuchenTerminateProcess() oder Halt() wären wesentlich aggresiver und unfreundlicher.

Neutral General 28. Nov 2011 17:02

AW: Application.Terminate die nette Option?
 
Je nachdem könnte/sollte eigentlich auch Application.MainForm.Close; funktionieren

r2c2 28. Nov 2011 17:02

AW: Application.Terminate die nette Option?
 
Aber auch nur "relativ", weil OnCloseQuery (und vielleicht noch anderes) übergangen wird). Die schöne Variante wäre
Delphi-Quellcode:
Application.MainForm.Close
.

Noch schöner, wäre sich zu fragen, warum man aus ner anderen Unit überhaupt die Anwendung schließen will...

mfg

Christian

himitsu 28. Nov 2011 17:03

AW: Application.Terminate die nette Option?
 
Über Application kommst du an die MainForm und der Schockst du ein Close.
Das Close der MainForm ruft dann Application.Terminate auf und beendet das Programm.

... falls die dieser Umweg lieber ist. :angle2:

Bjoerk 28. Nov 2011 17:22

AW: Application.Terminate die nette Option?
 
Wird bei Terminate wenigstens Free ausgeführt?

jaenicke 28. Nov 2011 17:31

AW: Application.Terminate die nette Option?
 
Ja, "nur" OnCloseQuery nicht. Die Speicherfreigabe dagegen funktioniert korrekt.

Bjoerk 28. Nov 2011 17:41

AW: Application.Terminate die nette Option?
 
Zitat:

Zitat von jaenicke (Beitrag 1138281)
Ja, "nur" OnCloseQuery nicht. Die Speicherfreigabe dagegen funktioniert korrekt.

Danke Jaenicke, genau das wollte ich wissen, weil ich es bei mir so an vielen Stellen im Einsatz habe (if Aladdin.Execute <> Aladdin.CheckOkay then Application.Terminate).

Luckie 28. Nov 2011 18:25

AW: Application.Terminate die nette Option?
 
Ich glaube, da würde ich noch ein bisschen an der Lampe rubbeln und das Konzept überarbeiten bzw. das Design. Ich würde das so gestalten, dass das Schießen der Form und somit beenden der Anwendung immer von der zum Formular gehörigen Unit ausgelöst wird. Ich als Kollege würde mich nämlich ziemlich wundern, wen nich den Code mal warten oder erweitern muss und mir in bestimmten Situationen das Programm einfach verschwindet. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr.

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