Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm richtig beenden (https://www.delphipraxis.net/5150-programm-richtig-beenden.html)

looser 25. Mai 2003 20:16


Programm richtig beenden
 
Ein Programm startet per PlaySND eine Wave-Datei.
Wenn das Haupfenster geschlossen wird stoppen ich auch
die Soundwiedergabe (per Befeht in OnClose).
Trotzdem wird im Taskmanager noch ein Task mit dem EXE-Namen
angezeigt der kräftig CPU-Resourcen verbraucht.
Also wie beende ich auch diesen Task ?

mirage228 25. Mai 2003 20:31

versuchs einfach mal mit

Delphi-Quellcode:
  Application.Terminate;

looser 25. Mai 2003 20:43

Muß mich korrigieren.
EXE ist nur einmal im Taskmanager.
Zur normalen Laufzeit der EXE (Sound spielt)
sogut wie keine CPU Auslastung bei EXE.
Habe im OnClose-Ereignis der Form1 nun :

playsound (nil,0,snd_async);
application.terminate;

Sobald ich Proggi mit X beende geht CPU-Auslastung auf
der EXE gegen 100% und EXE läuft halt irgendwie weiter.

mirage228 25. Mai 2003 20:49

application.terminate im onClose??!?!?!?!?!?!

gott bewahre!! mach das DA mal weg!

CalganX 25. Mai 2003 20:58

Zur Info, warum man das NIEMALS machen sollte:
Application.Terminate; terminiert zwar die Anwendung, ruft aber davor noch alle OnClose-Ereignisse des Hauptformulares auf. Somit steckst du in einer Endlosschleife.
Genauso gut/schlecht könntest du schreiben (im OnClose-Ereignis):
Delphi-Quellcode:
// tu irgendwas
Close;
Chris

looser 25. Mai 2003 21:02

:( Jeder saacht mach wech.
Aber wohin sollich es denn tun ? :freak:

mirage228 25. Mai 2003 21:02

Application.Terminate ruft halt nicht die Sachen der onClose Behandlungsroutine auf!!

Daniel B 25. Mai 2003 21:05

Hallo,
Zitat:

Zitat von mirage228
Application.Terminate ruft halt nicht die Sachen der onClose Behandlungsroutine auf!!

Dem muss ich mich anschliessen.

Beendet man das Programm mit Close, so wird auch OnClose aufgerufen, bei App.Terminate ist es aber OnDestroy!

Grüsse, Daniel :hi:

Nachtrag: Wer es ganz genau wissen will:
http://www.delphipraxis.net/viewtopic.php?t=200

Stanlay Hanks 25. Mai 2003 21:07

Eigentlich is doch Application.Terminate nur ein Befehl, der die Anwendung kontrolliert herunterfährt, oder?

Daniel B 25. Mai 2003 21:10

Hallo,
Zitat:

Zitat von Stanlay Hanks
Eigentlich is doch Application.Terminate nur ein Befehl, der die Anwendung kontrolliert herunterfährt, oder?

Ja. Bei Close wird die Anwendung nur geschlossen, aber nicht wirklich beendet. Also sozusagen nur versteckt.
Wenn Du eine Anwendung mit OnClose schliesst, so ist es beim nächsten Programstart sofort da.
Beendest Du aber mit Terminate, so wird auch die Anwendung wieder aus dem Speicher gelöscht und muss beim nächsten Start komplett neu geladen werden.

Grüsse, Daniel :hi:


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

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