Delphi-Version: 10 Seattle
AV bei VCL.Forms.DoneApplication
Liste der Anhänge anzeigen (Anzahl: 1)
Circa jedes 10. Mal beim Schliessen meiner Anwendung kommt mein weisser Wal wieder zum Vorschein.
Vielleicht fehlt mir nur das Wissen, hier effektiv zu Debuggen. Ich komme nicht weiter; woher kommt diese Access Violation oder welche Schritte kann ich unternehmen, um der Sache auf den Grund zu gehen? Sorry fuer den screenshot der Situation. Aus undefinierbaren Gruenden denke ich, man kann sich so besser reinversetzen. |
AW: AV bei VCL.Forms.DoneApplication
Hallo,
wie gross ist denn deine Anwendung? Ansatzpunkte sind: - Speicherfehler - Fenster 2 mal geschlossen - Interfaces falsch benutzt (z.B. kein const bei Übergabe als Parameter) - Frames - Window-MessageLoop überschrieben usw. Herangehenseise: - FastMM4 benutzen (also erste Unit in die DPR rein) - so nachstellen, dass nicht bei jedem 10., sondern immer auftritt also rausbekommen, was du konkret machst - alle Unter-Fenster/Code komplett ausblenden und schrittweise wieder einblenden Viel Glück |
AW: AV bei VCL.Forms.DoneApplication
Zitat:
Die Anwendung ist 82MB gross und verwendet vorrangig Frames statt Forms. Den MessageLoop habe ich nicht ueberschrieben. Beim Click des Haupt-Schliessen-Buttons fuehre ich "Application.Terminate;" aus. Eigentlich Hide()e ich da gar nichts von Hand. |
AW: AV bei VCL.Forms.DoneApplication
Immerhin ist im Debugger "self" noch belegt: "StatusForm". Also echt nichts spannendes im OnDestroy dieser Form?
Auf jeden Fall FastMM einmal einbauen. Der überschreibt bei Freigaben alles direkt mit Nullen und merkt bei virtuellen Methoden (wie z.B. dem Destruktor) auch direkt wenn die Instanz (das Formular) bereits freigegeben ist. |
AW: AV bei VCL.Forms.DoneApplication
Zitat:
Ich hatte allerdings noch nicht das Vergnuegen, die AV mit eingeschaltetem FastMM4 zu kriegen. Dieses event steht wohl noch aus und wuerde vielleicht einen Hinweis geben. |
AW: AV bei VCL.Forms.DoneApplication
Ich hätte ja eher gedacht dass dieses Formular irgendwo manuell freigegeben wird, und das dann einmal zu einem Zeitpunkt wo es schon "von selbst" weg ist.
|
AW: AV bei VCL.Forms.DoneApplication
Zitat:
|
AW: AV bei VCL.Forms.DoneApplication
Muss es denn eine Form sein, kann es nicht ein Frame sein, der schon weg, ist, wo du doch wie du sagt viel mir Frames arbeitest.
|
AW: AV bei VCL.Forms.DoneApplication
Hallo,
Zitat:
Close sollte doch reichen, oder ? Machst in den Frames irgendwas mit Mainform umsetzen? |
AW: AV bei VCL.Forms.DoneApplication
Zitat:
Wenn du mit 'umsetzen' meinst, dass sich irgendeine Aktion aus FrameCode auf die MainForm auswirkt, dann ja. Jede Menge. Wenn Du mit 'umsetzen' einen Fenster-MOVE meinst, dann nein. Um zirkulaere Referenzen dieser Art zu verhindern, habe ich diesen Workaround verwendet: DP: zirkulaere-referenzen-aber-warum-nicht-so Aber wenn ich mich recht erinnere, hatte ich meine AV sowohl vor als auch nach dieser Problembehandlung. |
AW: AV bei VCL.Forms.DoneApplication
Wenn ich ein Programm beende, tue ich das nie mit irgendwas von Application, sondern immer in einer eigene Methode, in der Close vom Hauptformular aufgerufen wird.
Vor dem Close werden ggfls. alle erforderlichen Aufräumarbeiten vorgenommen, also freigeben, was freizugeben ist, ggfls. andere Formulare schließen ... Seit dem hab' ich beim Programmbeenden nur noch dann Probleme und / oder Schutzverletzungen, wenn ich irgendwo Bockmist gebaut habe, also nur selbstverschuldete Fehler und nicht mehr solche, die aufgrund einer nicht zwingend vorhersehbaren Reihenfolge in den Aufräumarbeiten des Programmes auftreten könnten. |
AW: AV bei VCL.Forms.DoneApplication
Zitat:
Zitat:
Ich bedanke mich schonmal :dance: |
AW: AV bei VCL.Forms.DoneApplication
geht doch ;)
|
AW: AV bei VCL.Forms.DoneApplication
Oh je, zu frueh gefreut.
Meine Schaetzung mit 'kommt circa jedes 10. Mal' wuerde ich aendern in 'kommt circa jedes 30. Mal'. Nichts desto trotz, genau die gleiche AV kam jetzt wieder. TCustomForm.Hide greift ins leere nach DoneApplication. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 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