![]() |
Pointer, Object, :=, Assign und die Verzweiflung
Hallo!
Ich kapier mal wieder garnix. Aus einem meiner letzten glaubte ich gelernt zu haben: a,b: TMeinObjekt; 1) := Bedeutet
Delphi-Quellcode:
2) .Assign (ungefähr gleich "Objekt kopieren")
a := TMeinObjekt.Create;
a.Tag := 4; b := a; a.Tag := 5; Ergebnis: a.Tag = 5; b.Tag = 5;
Delphi-Quellcode:
Irgendwie scheint das nicht der Fall zu sein.
a := TMeinObjekt.Create;
b := TMeinObjekt.Create; a.Tag := 4; b.assign(a); a.Tag := 5; Ergebnis: a.Tag = 5; b.Tag = 4; Ich habe eine TComponentlist mit meinen TMeinObjekt. 3)
Delphi-Quellcode:
Warum haben nun beide Objekte verschiedene Tags?
type
TFoo = class(TObject) public MeinObjekt: TMeinObjekt; // Wird mit NIL initialisiert etc. end; a := TMeinObjekt.Create; MeineComponentList.Add(a); // schon vorher erschaffen etcetc Foo := TFoo.Create; a.Tag := 4; Foo.MeinObjekt := MeineComponentList.Items[0]; Foo.MeinObjekt.Tag := 20; Ergebnis: a.Tag = 4; Foo.MeinObjekt.Tag = 20; Thx für schnelle Antworten :/ |
Re: Pointer, Object, :=, Assign und die Verzweiflung
Zitat:
2, Wenn du eigene Properties/Membervariablen definerst benötigst Du auch eine eigene Implementierun der Assign-Methode welche diese Kopiert. |
Re: Pointer, Object, :=, Assign und die Verzweiflung
beim beispiel 2 solle b.create natürlich mit dabei sein, sry.
ich meine halt nur bei 1) zeigen a und b auf das selbe Objekt, egal ob a oder b die .Tag eigenschaft ändert, beim a.tag immer = b.tag 2) a und b nur direkt nach dem assign daten gleich, nach der ersten verändern immer unterschiedlich 3) warum funktioniert methode 1 bei mir nicht? a.tag <> b.tag (!) (b sei Foo.MeinObjekt) Edit: Hat sie -wie bei machen anderen Themen auch- von selbst erledigt. Meine Wenigkeit war so schlau im "richtigen" Programm anstelle von (sinngemäß) Foo.MeinObjekt := MeineComponentList.Items[0]; --> Foo.MeinObject := TMeinObjekt.Create zu machen.. Tjo, so bekommt man auch 2 Arbeitstage weg. Meine Nerven! Danke an alle, die das gelesen haben und Bernhard für die Antwort! Thema erledigt, jetzt gibts erstmal nen Kaffee :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 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