Ich bin letztens durch einen kleinen programmier Fehler auf ein Problem in der
IDE gestoßen.
Vielleicht hilft es dem einen oder anderen.
Ich habe bei der Notification Methode, vergessen das
inherited aufzurufen.
Delphi-Quellcode:
procedure TTestComp.Notification(AComponent: TComponent; Operation: TOperation);
begin
//inherited;
//wenn inherited auskommentiert hängt die IDE (Designer) beim schliesen von einem formular auf, wenn dort eine instanz zu der Komponente existiert.
//zur Laufzeit gibt es keine Probleme
end;
Zur Laufzeit gibt es keine Fehler. Auch lässt sich die Komponente ohne Problem auf ein Formular setzten, oder auch wieder entfernen.
Der Fehler tritt auf, wenn eine Instanz der Komponente auf einem Formular ist, und man im Designer das Formular schließt.
Dann hängt sich Delphi auf, CPU geht auf 100%. Sieht aus wie eine Endlosschleife.
IDE muss dann per Taskmanager gekillt werden.
Ich habe fast nen halben Tag mit der Suche verbracht, da es auch nicht grade kleine Komponenten waren und auch zich Abhängigkeiten drin waren, hatte ich eigentlich die Destruktoren im Verdacht.
Meine Hoffnung ist, das mit dem Post vielleicht dem einen oder andren schneller geholfen werden kann.
Gerne können die Experten auch kommentieren ob es sich um einen
IDE Bug handelt oder einfach nur um meine Dummheit
Getestet nur mit XE10.1 Berlin.
Testprokjekt im Anhang (
ProjectGroup_Test.zip), wer gerne mal seine
IDE Crashen will
Ablauf:
1. ProjectGroup_Test öffnen
2. TestKomp.bpl installieren
3. TestExe->uFTest öffnen
4. TTestKomp aufs formular hinzufügen
5.
6. Tadaaaa :