Willst du deine Daten nicht lieber in ein Objekt packen?
In diesem Fall sieht das freigeben so aus:
Delphi-Quellcode:
procedure TStringsFreeObjects(sl: TStrings);
var
i: Integer;
o: TObject;
begin
for i := sl.Count-1 downto 0 do
begin
o := sl.Objects[i];
if Assigned(o) then
begin
o.Free;
sl.Objects[i] := nil; // merken, dass Objekt freigegeben wurde
end;
end;
end;
...
TStringsFreeObjects(CheckListBox1.Items);
In deiner procedure DisposeList hast du übrigens vergessen, die Objekt-Zeiger auf nil zu setzen.
Dadurch besteht eine Chance, dass du die Daten nochmals freigibst.