![]() |
Delphi-Version: XE2
TObjectList mit gleichem Objekt aber anderen Werten
Hallo,
ich Habe eine TObjectlist die ich per Add() Methode beschreibe:
Delphi-Quellcode:
Ich habe das Gefühl, dass TObjectList das Objekt nur referenziert und nicht die Werte übernimmt.
Object.Att1 := '1';
Object.Att2 := '2'; ObjectList.Add(Object); Object.Att1 := '3'; Object.Att2 := '4'; ObjectList.Add(Object); Wenn ich einen Count durchführe werden zwar 2 Elemente angezeigt, allerdings sind in beiden Feldern '3' und '4'... Wie kann ich nur die Werte übergeben und nicht die Referenz, ohne ständig ein neues Objekt erzeugen zu müssen? MfG |
AW: TObjectList mit gleichem Objekt aber anderen Werten
Wenn du in der Objectlist mehrere unterschiedliche Elemente speichern willst, musst du auch mehrere erzeugen.
|
AW: TObjectList mit gleichem Objekt aber anderen Werten
Ich wollte das Einfügen etwas komfortabler als mit Arrays machen. Gibt es keine Möglichkeit oder zumindest eine Alternative mit der mein Ansatz funktioniert?
|
AW: TObjectList mit gleichem Objekt aber anderen Werten
Wurde doch genannt?
Du mußt für jeden Eintrag ein Objekt erstellen. Zitat:
was man eigentlich wissen sollte, wenn man von OOP ein bissl Ahnung hat. Du kannst dir höchsten eine Funktion schreiben, worin das gemacht wird. z.B.
Delphi-Quellcode:
und dann darin das Objekt erstellen, die Property zuweisen und der Objektliste hinzufügen.
ObjectList.AddObject('1', '2');
Record geht natürlich auch, mit einer generischen TList<TMyRecors>, wobei der Code dann so bleiben kann, wie du ihn grade hast. |
AW: TObjectList mit gleichem Objekt aber anderen Werten
Zitat:
Ich werde das Objekt wohl als Record definieren mal schauen ob ich damit zufrieden bin. Danke soweit :) |
AW: TObjectList mit gleichem Objekt aber anderen Werten
Bei der gen. TList<TMyRecord> mußt du nur aufpassen,
denn man kann einzelwerte nicht naträglich editieren/ändern, sondern muß das ganze Record austauschen.
Delphi-Quellcode:
ObjectList := TObjectList<TMyObject>;
MyObject := TMyObject.Create; MyObject.Att1 := '1'; MyObject.Att2 := '2'; ObjectList.Add(MyObject); MyObject := TMyObject.Create; MyObject.Att1 := '3'; MyObject.Att2 := '4'; ObjectList.Add(MyObject); ObjectList[0].Att1 := '5'; ShowMessage(ObjectList[0].Att1);
Delphi-Quellcode:
RecordList := TList<TMyRecord>;
MyRecord.Att1 := '1'; MyRecord.Att2 := '2'; RecordList.Add(MyRecord); MyRecord.Att1 := '3'; MyRecord.Att2 := '4'; RecordList.Add(MyRecord); RecordList[0].Att1 := '5'; // beschreiben geht nicht (nur lesen) MyRecord := RecordList[0]; MyRecord.Att1 := '5'; RecordList[0] := MyRecord; ShowMessage(RecordList[0].Att1); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz