Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi close Beendet nicht (https://www.delphipraxis.net/39898-close-beendet-nicht.html)

atreju2oo0 8. Feb 2005 19:55


close Beendet nicht
 
Ich habe für ein Projekt diesen Quelltext geschrieben:

Delphi-Quellcode:
loadStamm(Stamm);

help:=Stamm;
while Help.next<>nil do
  begin
    Help:=help.next;
    if help.Stamm.id=0 then showmessage('0');
  end;

close;

//Spielerdaten laden
loadSpieler;
loadstamm und loadspieler sind dabei proceduren.
Da einige Funktionen aus unerklärlichen Gründen nicht funktionieren habe ich
versucht mit Breakpoints der Sache auf den Grund zu gehen.
Und nun das überraschende: Dabei wird close; zwar durchlaufen, aber das Programm wird nicht beendet
sondern loadspieler wird gestartet.
??? Wieso ???

P.S.: Falls das wichtig ist... Help und Stamm sind zeiger auf einen von mir entworfenen Typ...

Sprint 8. Feb 2005 19:57

Re: close Beendet nicht
 
Macht es sehr viel Sinn, nach Close noch einen Befehl auszuführen?

sakura 8. Feb 2005 19:58

Re: close Beendet nicht
 
Wenn Dein Code gerade bei close (also debuggen) ist, dann drücke mal F7 und schaue, zu welcher Methode/Prozedur er springt.

Das bissle Code da oben reicht nicht aus, um Dir die Gründe zu nennen.

...:cat:...

alcaeus 8. Feb 2005 19:59

Re: close Beendet nicht
 
Hallo Thomas,

rufst du Close zufaellig im OnCreate oder OnShow des FOrms auf? AFAIR funktioniert es in den beiden Event-Handlern nicht.
Weiters solltest du auch pruefen, ob in einem OnCloseQuery-Handler Action auf caNone gesetzt wird...

Greetz
alcaeus

atreju2oo0 8. Feb 2005 20:03

Re: close Beendet nicht
 
Okay... Damit wäre die Frage beantwortet...
Das ganze wird natürlich im on Create abgearbeitet.
:wall:

(natürlich weiß ich das es kein Sinn macht nach close noch Befehle zu schreiben aber es war zum Testen um Speichercrash
zu vermeiden)

Thx @ All...

sakura 8. Feb 2005 20:12

Re: close Beendet nicht
 
Zitat:

Zitat von atreju2oo0
Okay... Damit wäre die Frage beantwortet...
Das ganze wird natürlich im on Create abgearbeitet.

Versuche es mit Send(Handle, WM_CLOSE, 0); oder so. Bin mir jetzt nicht sicher, aber das könnte gehen.

...:cat:...

Muetze1 8. Feb 2005 20:14

Re: close Beendet nicht
 
Moin!

Ausserdem ist es eine Methode die eh immer zurück kehrt und damit eh den Befehl danach noch abarbeitet. OnClose platziert imho nur eine Message im Message Loop...

MfG
Muetze1

Sprint 8. Feb 2005 20:31

Re: close Beendet nicht
 
Close Methode im OnCreate-Ereignis:

Close ruft intern TCustomForm.Close auf. Und weil Application.MainForm noch auf nil steht, wird auch nicht Application.Terminate aufgerufen. Application.Terminate muss aber aufgerufen werden, weil sonst keine PostQuitMessage verschickt wird.
Thomas hat natürlich recht, dass alles was nach Close abgearbeitet wird, bis die Quit (Thread) Nachricht verarbeitet worden ist.

arbu man 8. Feb 2005 20:48

Re: close Beendet nicht
 
Versuch mal Application.Termitate


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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