Zitat von
messie:
Delphi-Quellcode:
//Einlesen der Parameter
repeat
s := ParaFile.ReadString('Paras','Para' + intToStr(i),'');
if s <> '' then
begin
localpar := ParaSort(s);
Parameters.Items[localpar.ParaGroup].Items[0].add(TParas.Create);
application.ProcessMessages;
j := Parameters.Items[localpar.ParaGroup].Items[0].Count - 1;
application.ProcessMessages;
Parameters.Items[localpar.ParaGroup].Items[0].Items[j] := localpar; // <- hier weist Du der Objectlist das lokal erzeugte Objekt zu
{hier die erste Debugausgabe ob die Übergabe ok ist...}
ShowMessage(Parameters.Items[localpar.ParaGroup].Items[0].Items[j].name);
end;
until s = '';
ParaFile.Free;
localpar.Free; // <- hier gibst Du das Objekt wieder frei
Du gibst das Objekt frei, das Du vorher zugewiesen hast. Und zwar nur das letzte, da Du die Freigabe außerhalb der Schleife vornimmmst. Die ObjectList speichert nur den Zeiger auf das Objekt, nicht das Objekt selbst.
Gib localpar einfach nicht selber frei, sondern überlasse das der ObjectList mit OwnsObjects := True (ist schon so per default).
Gruß, teebee