AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Pointer, Object, :=, Assign und die Verzweiflung
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer, Object, :=, Assign und die Verzweiflung

Ein Thema von berens · begonnen am 22. Nov 2006 · letzter Beitrag vom 22. Nov 2006
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Pointer, Object, :=, Assign und die Verzweiflung

  Alt 22. Nov 2006, 15:19
Hallo!

Ich kapier mal wieder garnix. Aus einem meiner letzten glaubte ich gelernt zu haben:
a,b: TMeinObjekt;

1) := Bedeutet
Delphi-Quellcode:
a := TMeinObjekt.Create;
a.Tag := 4;
b := a;
a.Tag := 5;

Ergebnis: a.Tag = 5; b.Tag = 5;
2) .Assign (ungefähr gleich "Objekt kopieren")
Delphi-Quellcode:
a := TMeinObjekt.Create;
b := TMeinObjekt.Create;
a.Tag := 4;
b.assign(a);
a.Tag := 5;

Ergebnis: a.Tag = 5; b.Tag = 4;
Irgendwie scheint das nicht der Fall zu sein.

Ich habe eine TComponentlist mit meinen TMeinObjekt.

3)
Delphi-Quellcode:
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;
Warum haben nun beide Objekte verschiedene Tags?

Thx für schnelle Antworten :/
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Pointer, Object, :=, Assign und die Verzweiflung

  Alt 22. Nov 2006, 15:24
Zitat von berens:
.Assign (ungefähr gleich "Objekt kopieren"
Delphi-Quellcode:
a := TMeinObjekt.Create;
a.Tag := 4;
b.assign(a);
a.Tag := 5;

Ergebnis: a.Tag = 5; b.Tag = 4;
1, Da du b nicht mit einer gültigen Instanz belegt hast wird versucht nach nil zu Assignen
2, Wenn du eigene Properties/Membervariablen definerst benötigst Du auch eine eigene Implementierun der Assign-Methode welche diese Kopiert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Pointer, Object, :=, Assign und die Verzweiflung

  Alt 22. Nov 2006, 15:46
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz