Autor Beitrag
Gunther Troost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18

Windows 10, 64 bit
Delphi 5
BeitragVerfasst: Mi 04.03.20 11:09 
Ich wundere mich etwas, aber wer weiß, vielleicht ist das normal.

Beim Beenden des Programms mit Application.Terminate wird nach dem Abschluss des Prozeduraufrufs die Prozedur Mainform.Activate aufgerufen. Das hat jetzt nicht so besonders schlimme Auswirkungen, doch das wundert mich etwas, weil ja das Programm beendet wird und möglicherweise gewisse Komponenten schon "zerstört" sind, so dass deren Aufruf dann Probleme bereiten könnte. Überhaupt ist diese Prozedur Terminate sehr aufwendig, weil sämtliche Komponenten zerstört und deren Notification-Prozeduren noch abgehandelt werden, was bei der Fehlersuche dann sehr umständlich ist, weil ich in dem Programm mehrere hundert Komponenten auf den jeweiligen Formularen habe. Aber egal, muss wohl so sein.
Aber dass bei dem Beenden eine Formularaktivierungsroutine aufgerufen wird? Hat das möglicherweise damit zu tun, dass bei irgendeiner der Komponenten bei dessen "Zerstörung" die Prozedur aufgerufen wird? Ich suche schon, wo ich das vielleicht unbeabsichtigt programmiert habe. Ich nehme schon die OnChange-Prozeduren so wenig wie möglich in Anspruch, weil die sowieso ständig dazwischenfunken, besonders beim Zerstören eines Objekts. Doch den Verursacher bei der Vielzahl von Abbruchprozeduren der Objekte zu finden ist schlichtweg eine Geduldssache.

Wer kann mir da eine Antwort geben?

Für Eure Hilfe bin ich Euch dankbar.

Liebe Grüße und Gesundheit

Gunther Troost


Moderiert von user profile iconTh69: Topic aus WinForms verschoben am Mi 04.03.2020 um 16:00
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4155
Erhaltene Danke: 865

Win10
C#, C++ (VS 2015/17)
BeitragVerfasst: Mi 04.03.20 12:22 
Du meinst für ein Delphi-Programm (nicht .NET), oder?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18785
Erhaltene Danke: 1644

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.03.20 13:16 
user profile iconGunther Troost hat folgendes geschrieben Zum zitierten Posting springen:
Beim Beenden des Programms mit Application.Terminate wird nach dem Abschluss des Prozeduraufrufs die Prozedur Mainform.Activate aufgerufen.
Bei mir nicht. Wie sieht an der Stelle denn der Stacktrace aus?
Gunther Troost Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18

Windows 10, 64 bit
Delphi 5
BeitragVerfasst: Mi 04.03.20 18:21 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Du meinst für ein Delphi-Programm (nicht .NET), oder?


Ja, es betrifft ein Delphiprogramm.
Gunther Troost Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18

Windows 10, 64 bit
Delphi 5
BeitragVerfasst: Mi 04.03.20 18:37 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGunther Troost hat folgendes geschrieben Zum zitierten Posting springen:
Beim Beenden des Programms mit Application.Terminate wird nach dem Abschluss des Prozeduraufrufs die Prozedur Mainform.Activate aufgerufen.
Bei mir nicht. Wie sieht an der Stelle denn der Stacktrace aus?


Da steht außer der Prozedur Formactivate nur das Hauptprogramm. Wenn ich da auf das Hauptprogramm klicke, kommt der Zeiger auf die "RUN"-Prozedur in der .dpr-Datei. Sonst sind keine weiteren Prozeduren aufgelistet. Zur Zeit geht mir allerdings mein Laptop dermaßen auf den Geist. Das Linken dauert gefühlte 10 Minuten. GRRRRRR! Aber der Laptop war schon immer dermaßen lahmarschig. Denn alle Programme laufen auf dem schleichend. Ich habe schon mehrfach gestestet, ob da nicht ein Virus aktiv sei, aber der Defender zeigt nichts an.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1210
Erhaltene Danke: 102

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Do 05.03.20 08:42 
Zum Speed, da ist ne SSD drinne? Besorg die mal Process Explorer von Sysinternals. Damit kann man auch nach Flaschen mit engen Hälsen suchen.

Zum Problem, verwendest du ein Bugreport Tool? MadExcept oder so? Wenn ja, löß da mal ne Exception aus (natürlich nur beim Beenden) der Stacktrace da ist im Regelfall etwas umfangreicher. Das er richtiger ist ist allerdings nicht garantiert :wink:

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Jetzt rächt sich die Natur und tötet uns.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18785
Erhaltene Danke: 1644

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.03.20 17:47 
user profile iconGunther Troost hat folgendes geschrieben Zum zitierten Posting springen:
Da steht außer der Prozedur Formactivate nur das Hauptprogramm. Wenn ich da auf das Hauptprogramm klicke, kommt der Zeiger auf die "RUN"-Prozedur in der .dpr-Datei.
Komisch, nur diese beiden Zeilen?
Dann bleibt nur Debug-DCUs zu aktivieren und nach dem end deines OnActivate Ereignisses mit F7 weiter zu debuggen.

user profile iconGunther Troost hat folgendes geschrieben Zum zitierten Posting springen:
Zur Zeit geht mir allerdings mein Laptop dermaßen auf den Geist. Das Linken dauert gefühlte 10 Minuten. GRRRRRR! Aber der Laptop war schon immer dermaßen lahmarschig. Denn alle Programme laufen auf dem schleichend. Ich habe schon mehrfach gestestet, ob da nicht ein Virus aktiv sei, aber der Defender zeigt nichts an.
Das liegt vermutlich am Defender. Der ist leider (trotz anders lautender Testergebnisse) teilweise wirklich furchtbar was die Performance angeht. Bei Antivirenprogrammen habe ich mit den kostenlosen Varianten bisher leider nur Probleme gehabt bzw. bei anderen beobachtet, egal welches...

Der Taskmanager zeigt unter dem Reiter Leistung an wo der Flaschenhals liegt (CPU, Festplatte, ...) und unter dem ersten Reiter Prozesse siehst du welcher Prozess da bremst. Bei dir dürfte das "Antimalware Executable" oder so ähnlich sein.