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?