Thema: Delphi AV - Warum?

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

AV - Warum?

  Alt 24. Sep 2005, 13:51
Hi

ich habe eine TreeView die ich dynamisch befülle.
da das im laufe des Programms mehrmals vorkommen kann, habe ich mir folgendes überlegt:

Delphi-Quellcode:
procedure UpdateTreeView;
var i:Integer;
begin
  { ... Daten holen etc. ... }
  FTree.Items.Clear; //TreeView leeren
  for i:=0 to Length(FNodes)-1 do //Nodes plattmachen
    if FNodes[i]<>nil then FNodes[i].Free;
  SetLength(FNodes,FGruppen.Count+FLieder.Count); //Array setzen
  for i:=0 to Length(FNodes)-1 do //Nodes erstellen
    FNodes[i]:=TTreeNode.Create(FTree.Items);
  { ... Nodes setzen und in TreeView rein ... }
end;
aber beim Free'en der Nodes kommt es immer zu ner AV (Wenn sie schon exitieren)
wenn ich die schleife weglasse habe ich ein monster-Speicherleck was eigentlich nur daher kommen kann.

weiss einer was daran falsch ist? bzw wie ich es anders machen kann?

Edit: FNodes ist ein array of TTreeNode, FGruppen und FLieder TStringList und FTree eine TreeView.
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat