AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Programm richtig beenden?

Ein Thema von AlexanderBrade · begonnen am 6. Jan 2009 · letzter Beitrag vom 7. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2   
AlexanderBrade

Registriert seit: 14. Dez 2008
189 Beiträge
 
Delphi 2005 Personal
 
#1

Programm richtig beenden?

  Alt 6. Jan 2009, 16:40
Hallo, ich habe folgendes Problem:
Wie kann ich ein Programm wirklich beenden? Bei close schließt sich ja bloß das Formular! Manchmal aber (komischerweise) wird das Programm auch richtig beendet, z.B. wenn bloß ein Formular geöffnet ist!
Brauche dringend Hilfe!
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#2

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 16:41
Wenn das Hauptformular geschlossen wird schließt sich alles.
Ansonnsten gäbs noch application.terminate und halt(0) .
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 16:41
Application.Terminate;
Jan
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 16:45
Hallo,

dass Schließen des Hauptformulars eines Programmes beendet dieses, in der Regel ist das erste Formular, das in der DPR-Datei erstellt wird, das Hauptformular.

Application.MainForm zeigt auf das Hauptformular,Application.MainForm.Close; sollte das Programm beenden.
Wie man aus den anderen Antworten sieht: Viele Wege führen nach Rom.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 16:46
Letzendlich gibt es bei einem VCL Programm eine Schleife die ständig läuft. Diese Schleife ruft die ganze Zeit Nachrichten ab (wie Mausklicks, Zeichenanweisungen etc.). Kommt eine solche Nachricht an wird die entsprechende Funktion aufgerufen und dann geht es weiter in der Schleife bis eben der Schließenbefehl kommt.

Im groben kannst du es dir so vorstellen:
Delphi-Quellcode:
while (dont_close) do
begin
  Verarbeite_Nachrichten();
end;
Wenn du jetzt Close aufrufst oder dergleichen wird nur "dont_close" (auf obiges Beispiel bezogen) auf False gesetzt und somit wäre die Schleife zu Ende und das Programm läuft bis zum Ende durch.
Das kann allerdings nur passieren wenn die Funktion "Verarbeite_Nachrichten" zurück kehrt. Hast du Beispielsweise in einem ButtonClick eine Endlosschleife kehrt "Verarbeite_Nachrichten" natürlich nicht zurück weil die Befehle in deiner ButtonClick-Methode noch abgearbeitet werden.

Wenn also nach dem Close-Befehl dein Programm noch weiter läuft ist es sehr wahrscheinlich das du noch irgendwo in einer Schleife hängst. Du kannst ja einfach mal die Pause-Taste in Delphi drücken und schauen wo das Programm dann ist (Call-Stack)
Du kannst auch einfach einen Haltepunkt bei deinem Close-Befehl setzen und dann mit F8 die folgenden Befehle der Reihen nach abarbeiten um zu sehen wo er eventuell noch hängt (wenn das nicht geht eben Pause wählen).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 16:56
Ich denke anhand der Problembeschreibung, dass Stephans Antwort vermutlich die zutreffende ist. Halt würde ich gar nicht verwenden, solange ich nicht sehr triftige Gründe dafür habe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#7

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 18:38
Zitat von DeddyH:
Halt würde ich gar nicht verwenden, solange ich nicht sehr triftige Gründe dafür habe.
Ich geh davon aus, dass Jens eher einen Haltepunkt (Breakpoint) zum Debuggen meint...
米斯蘭迪爾
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 19:01
Ich hab ja gar nicht Jens gemeint. QuickAndDirty hat in #2 auch halt(0) als Alternative ins Spiel gebracht
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#9

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 19:38
Zitat von DeddyH:
Ich hab ja gar nicht Jens gemeint. QuickAndDirty hat in #2 auch halt(0) als Alternative ins Spiel gebracht
Asche auf mein Haupt und meine Gesinnung...
米斯蘭迪爾
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Programm richtig beenden?

  Alt 6. Jan 2009, 19:54
Arbeitest du vielleicht mit Threads? Denn jeder laufender Thread, der nicht als Background-Thread gekennzeichnet ist, hält die Anwendung am Leben.
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 Uhr.
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