Einzelnen Beitrag anzeigen

teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#2

Re: Probleme mit Übergabe an TObjectlist

  Alt 7. Jun 2005, 11:59
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
  Mit Zitat antworten Zitat