AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Programm schließt sich nicht

Ein Thema von DieDolly · begonnen am 28. Sep 2018 · letzter Beitrag vom 28. Sep 2018
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#1

Programm schließt sich nicht

  Alt 28. Sep 2018, 13:18
Ich habe eben ein etwas umfangreicheres Programm umgeschrieben. Alles funktioniert bis auf das Schließen des Programms.
Ich schließe das Programm über das MainMenu. Das MainMenu-Item ruft Close; auf. Der Rest erklärt sich von selbst.

Ich habe jeglichen Code bereits rausgenommen, der verdächtig ist und blockieren könnte.
Das Programm wird nach Punkt 3 nicht mehr angezeigt, es befindet sich aber noch im TaskManager.

Delphi-Quellcode:
procedure TForm1.CloseProgramClick(Sender: TObject);
begin
 ShowMessage('1) CloseProgramClick');
 Close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 ShowMessage('2) FormCloseQuery');
 CanClose := True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ShowMessage('3) FormClose');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 ShowMessage('4) FormDestroy');
end;
Entweder spinnt da was gewaltig oder ich übersehe da gerade etwas und sollte mich schämen.

Geändert von DieDolly (28. Sep 2018 um 13:21 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Programm schließt sich nicht

  Alt 28. Sep 2018, 13:20
Was hindert dich daran im Debugger auf Pause zu drücken und zu schauen wo das Programm im Ablauf grade steht?
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#3

AW: Programm schließt sich nicht

  Alt 28. Sep 2018, 13:24
Mein Unwissen. Ich sehe nur eine lange Liste voll Assembler-Code.

Markiert ist aber
Zitat:
ntdll.RtlUserThreadStart:
778F01C4 89442404 mov [esp+$04],eax
^

Geändert von DieDolly (28. Sep 2018 um 14:09 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Programm schließt sich nicht

  Alt 28. Sep 2018, 14:08
Ok, das ist bitter. Hast du wirklich im Hauptthread geschaut? Wenn der Debugger mittendrin anhält ist es ja nicht zwangsläufig einer mit Delphi-Code.

Ansonsten könntest du in der DPR-Datei einen Haltepunkt auf das letzte end. setzen und mit F7 schauen wie es weitergeht. Ein Delphi-Programm hängt z.B. bis zum Sankt Nimmerleinstag und alle Threads aus System.Threading.TThreadPool.Default zu schließen.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#5

AW: Programm schließt sich nicht

  Alt 28. Sep 2018, 14:10
Nach einer langen Suche habe ich den Verdächtigen gefunden.
Beim Programmstart starte ich einen TTask der eine while-Schleife abarbeitet. Im Prinzip wartet er nur ein bisschen (etwa 2 Sekunden).
Die Schleife prüft die Variable i gegen eine feste Zahl. Beispielsweise 10000. In der While-Schleife steht Sleep(1) und Inc(i).

Das Problem war, dass die Variable i außerhalb von TTask deklariert war.
  Mit Zitat antworten Zitat
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 06:36 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