![]() |
Abstrakter Fehler beim Schließen eines MDI-Childs
Ich benutze in meiner MDI-Anwendung folgenden Code, um zu checken, ob eine Formularinstanz eines MDIChilds bereits existiert.
Eine ggf. vorhandene Instanz soll weiterverwendet werden, ansonsten wird eine neue Instanz erzeugt. Der Aufruf erfolgt im Menü des Hauptformulars frmMain (vom Typ fsMDIForm).
Delphi-Quellcode:
Im OnClose-Ereignis des MDIChilds nutze ich zur Speicherfreigabe einfach folgendes:
procedure TfrmMain.WochenplanungClick(Sender: TObject);
begin //Formular öffnen, ggf. Speicher allozieren if not Assigned (frmWochenplanung) then frmWochenplanung:=TfrmWochenplanung.Create(self) else frmWochenplanung.Show; //Fenster ggf. aus dem minimierten Zustand holen frmWochenplanung.WindowState:=wsNormal; end;
Delphi-Quellcode:
Das ganze klappt soweit ganz gut, aber hin und wieder (nach diversen Öffnen und Schließen-Vorgängen) gibt es beim Schließen einen "Abstract Error", irgendwas scheint da mit der Speicherverwaltung nicht zu klappen (?). Jemand eine Idee ?
FreeAndNil(frmWochenplanung);
:dancer2: Zitat:
|
Re: Abstrakter Fehler beim Schließen eines MDI-Childs
Hallo,
der Code funktioniert bei mir ohne Probleme. Kann es sein, daß etwas anderes nicht sauber freigegeben wird? Ansonsten Projekt/Optionen/Compiler und 'Mit Debug-DCUs' einschalten. Wenn Du Dir dann noch den Aufruf-Stack anzeigen läßt, siehst Du evtl. wo der Fehler herkommt. Viele Grüße, Delphianer |
Re: Abstrakter Fehler beim Schließen eines MDI-Childs
Danke für die schnelle Antwort, wirklich ein ergiebiges Forum hier...
Na, dann lag ich ja nicht völlig daneben mit meinem Code. :hello: Ich denke, das eine ADOQuery auf dem Formular vielleicht die Übeltäterin sein könnte. Nicht auszuschließen, dass da irgendwas noch nicht sauber ist. Ansonsten hat das MDIChild nur ein DBGrid, das das Ergbenis der Abfrage (nach Auswahl eines Filterkriteriums per Combobox) enthält. Also nichts Aufregendes... Inzwischen habe ich festgestellt, das das Problem auch bei anderen Forms auftritt, die allesamt eine ähnliche Grundstruktur haben (1-5 ADOQuerys, DBGrids). Es ist halt nur nicht auszumachen, warum die Fehlermeldung beim Schließen kommt. Es ist einfach nicht reproduzierbar. Ich werde das Ganze mal mit Deinem Hinweis zum Aufrufstack genauer unter die Lupe nehmen. :coder: |
Re: Abstrakter Fehler beim Schließen eines MDI-Childs
Moin sirtoby,
erst einmal herzlich willkommen hier in der DelphiPRAXiS. Ein abstrakter Fehler deutet meist darauf hin, dass eine als abstract deklarierte Methode verwendet wurde. Abstrakte Klassen, also Klassen die abstrakte Methoden enthalten sollte man allerdings nicht direkt verwenden, sondern nur als Basisklasse für Ableitugen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz