Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 

Re: Fehler beim freigeben dynamisch erzeugter TLabels

  Alt 21. Jun 2007, 17:55
Hallo Sidorion,

Zitat:
Na das ist mal wieder ein klassischer Fall von fundiertem Halbwissen.
...oder einer falsche Einschätzung deinerseits aufgrund meiner unglücklichen Formulierung. Hätte ich von "untergeordneten Controls" statt "Child-Controls" gesprochen, wäre hoffentlich klar gewesen, worauf ich hinaus wollte:

Zitat von TWinControl.Destroy:
Delphi-Quellcode:
[...]
I := ControlCount;
while I <> 0 do
begin
  Instance := Controls[I - 1];
  Remove(Instance);
  Instance.Destroy; // <---
  I := ControlCount;
end;
Ich hegte den Verdacht, daß der Parent (nicht Owner!) der Labels vorzeitig freigegeben wird und damit seine untergeordneten(!) Controls ebenfalls vernichtet. Dies hätte im dynamischen Array ungültige Referenzen hinterlassen. Der Versuch, über diese Referenzen eine erneute Freigabe mittels Free durchzuführen, hätte dann zu einer Schutzverletzung geführt.

Gruß Hawkeye
  Mit Zitat antworten Zitat