Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.004 Beiträge
 
Delphi 12 Athens
 
#5

AW: Abstrakter Fehler beim freigeben einer Komponente unter Delphi XE

  Alt 24. Aug 2012, 13:22
Zitat:
TAdvPanel(Hauptform.FindComponent('SatzEditPanel'+ IntToStr(PanelNr))).Free;
Eigentlich ist der Cast unnötig, da TComponent schon das Free kennt.
Hauptform.FindComponent('SatzEditPanel'+ IntToStr(PanelNr)).Free;
Was passiert hier?
(Hauptform.FindComponent('SatzEditPanel'+ IntToStr(PanelNr)) as TAdvPanel).Free;
Free wurde doch hoffentlich nirgendwo überschrieben?

Delphi-Quellcode:
if not (TObject(Hauptform) is TForm) then
  raise Exception.Create('Fehler');
if not (Hauptform.FindComponent('SatzEditPanel' + IntToStr(PanelNr)) is TAdvPanel) then
  raise Exception.Create('Fehler');
Hauptform.FindComponent('SatzEditPanel'+ IntToStr(PanelNr)).Free;
Hast du vom 2007 mindestens eine Professional?
Wenn ja, dann schalte in den Projektoptionen die Debug-DCUs an, setze einen Haltepunkt auf das .Free und schau mit F7 nach, wo es knallt.

Zitat:
Also statt

TAdvPanel.Create(self) einfach

TAdvPanel.Create(nil)
Joar, wenn das "Self" vor deinem Free freigegeben wird, dann muß es hier natürlich auch knallen, weil das Panel ja dann schon weg ist.


Delphi 2 Desktop
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Aug 2012 um 13:25 Uhr)
  Mit Zitat antworten Zitat