Arthur Dent hat geschrieben:Meine Frage ist nun ob gemäß meiner Annahme einzelne Objekte unverwechselbar identifiziert werden Können. Mit anderen Worten: Ich gehe davon aus das Objekte bei der Erzeugung eine spezifische ID erhalten.
Im Allgemeinen werden Objekte über ihre Position im Speicher unterschieden. Es gibt keine globale ID oder ähnliches. Die Adresse eines Objektes wird in einer Objektvariablen abgelegt:
Code: Alles auswählen
var
myObject, mySecondObject: TObject;
begin
myObject := TObject.Create;
// myObject enthält jetzt die Adresse des neu erzeugten Objektes
mySecondObject := TObject.Create;
// mySecondObject und myObject enthäten jeweils die selben Daten, sind aber unterschiedliche Objekte, da sie an anderen Speicherstellen liegen
mySecondObject := myObject;
// mySecondObject zeigt jetzt auf das zuerst erstellte Objekt. Auf das zweite erstelle Objekt kann jetzt nicht mehr zugegriffen werden
end;
Du kannst also zu einer Liste auch ein Objekt mehrfach hinzufügen, sofern das Listenobjekt das nicht verhindert (z.B. an Position 2 und 5). Löscht du das Objekt einmal aus der Liste wird i.d.R. nicht alle Zeiger (2 und 5) auf das Objekt aus der Liste entfernt sondern nur der zuerst gefundene (Listenposition). Welche Listenposition (2 oder 5) zuerst gefunden wird, hängt von dem verwendeten Suchalgorithmus ab (z.B. Linar von vorne, hinten, Binäre Suche etc.). Selbstverständlich kann es auch Listen geben, die alle Vorkommen eines Objektes aus der Liste entfernen.
Im Speziellen kann das anders aussehen; so werden bei TCollection bzw. TCollectionItem eine Nummer pro Listenelement vergeben und im Listenelement selbst gespeichert (Eigenschaft ID).
Spezifischer Antworten kann es leider nur geben, wenn du uns erzählst, welche Listen und welche Objekte (Klassen) verwendet werden.