Einzelnen Beitrag anzeigen

Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Objectlist.Add(). überladen

  Alt 22. Aug 2011, 06:56
Guten Morgen,

und man sollte vielleicht erwähnen, dass TObjectList von TList abgeleitet ist. Weiterhin sollte man erwähnen, dass es zwischen einem Zeiger und einer Instanz in Delphi keine wesentlichen Unterschiede vorhanden sind - eine Instanz ist im Grunde ein Zeiger auf die Objektstruktur. Deshalb passiert bei der Freigabe hier genau das:

Delphi-Quellcode:
  EinObjekt := TObject.Create();
    EinObjekt.Name := '1';
    Objektliste.Add(EinObjekt);
    {EinObjekt.Destroy;
    EinObjekt := nil;   Das Objekt in der Liste geht auch verloren!}

    EinObjekt := TObject.Create();
    EinObjekt.Name := '2';
    Objektliste.Add(EinObjekt);
Wenn Du "EinObject.Destroy" machst, dann gibts Du das Objekt frei - in der Liste ist aber immer noch die Adresse des Objektes gespeichert, das inzwischen aber nicht mehr existiert.

Grüße
  Mit Zitat antworten Zitat