Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#2

Re: TObjectlist, wie funktioniet sie wirklich?

  Alt 3. Jan 2007, 21:40
Zitat von Antigo:
So nun möchte ich gerne eine ganze Menge Objekte in der TObjectlist speichern. Folgendes funktioniert aber beispielsweise nicht.

In beiden Elementen der Liste würde nun Test2 stehen.
Falsch!

Delphi-Quellcode:
  //Pseudocode
  var Objekt: TObjekt;
      liste:TObjectlist;
  begin
    liste := TObjectList.Create;
    Try
      Objekt := TObjekt.create('Test1');
      liste.add(TObjekt);

      Objekt := TObjekt.create('Test2'); // Objekt bekommt hier eine neue Instanz zugewiesen, somit eine neue "Adresse auf die Objekt" zeigt.
      liste.add(TObject);
    finally
      list.free;
    end;
  end;
Daher sind es 2 unterschiedliche Zeiger die die Objektliste da bekommt und speichert. In beiden Einträgen stehen unterschiedliche Adresse. Der Code funktioniert so...

Zitat von Antigo:
Ist es daher richtig zu sagen, in einer TObjectlist werden nur Zeiger gespeichert?
Ja.

Zitat von Antigo:
Wenn ja wie befülle ich dann am elegantesten eine TObjectlist mit vielen Elementen in einer einzelnen Prozedur.
So wie du es selber gepostet hast.

Zitat von Antigo:
Wenn ich jedesmal nur ein Objekt reinspeichere funktioniert es, da die lokale temporäre Variable scheinbar bei jedem Aufruf eine andere Speicheradresse hat auf die ich dann über die TObjectlist zugreifen kann.
Er speichert nirgendwo die lokale temporäre Variable sondern deren Inhalt!

Kann es sein, dass deine TObjectList genauso lokal deklariert ist wie in deinem Beispiel?
  Mit Zitat antworten Zitat