AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objektreferenz übergeben (Self)

Offene Frage von "Dawn87"
Ein Thema von Dawn87 · begonnen am 6. Dez 2008 · letzter Beitrag vom 6. Dez 2008
Antwort Antwort
Dawn87

Registriert seit: 15. Feb 2007
Ort: Lüdenscheid
189 Beiträge
 
Delphi XE5 Professional
 
#1

Objektreferenz übergeben (Self)

  Alt 6. Dez 2008, 03:48
Hallo!

Ich habe ein Problem:

Und zwar habe ich iene Klasse "TComboProxy" die eine Combobox erzeugt. Dieser Combobox möchte ich gerne die Referenz auf die Instanz von TComboProxy mitgeben. TComboProxy verwaltet nämlich noch die Einträge in der Combobox.
Delphi-Quellcode:
function TComboProxy.AddControl(Parent: TWinControl): TWinControl;
var
  coTemp: TComboBox;
begin
  coTemp := TComboBox.Create(Parent);

  coTemp.Parent := Parent;
  coTemp.Width := 80;
  coTemp.Height := 25;
  coTemp.Text := 'Test';
  coTemp.Visible := True;

  coTemp.Tag := Integer(Pointer(self)); // Referenzübergabe

  Result := coTemp;
end;
Mit dem Code klappt dies Ansatzweise. Wenn ich jedoch 2 Instanzen von TComboProxy erzeuge (und demensprechend 2 ComboBoxen) zeigen beide Pointer (in coTemp.Tag) auf selbe Adresse.

Könnt ihr mir sagen was ich falsch gemacht habe?

Grüße
Stefan
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Objektreferenz übergeben (Self)

  Alt 6. Dez 2008, 05:28
Bist du sicher dass es wirklich ganz genau die selbe Adresse ist? Nicht nur evtl. ein Zahlendreher o.ä.? Das einzige was mir (nach jetzt 23h wach) noch einfallen würde wäre, dass du im dem ersten Proxy aus Versehen zwei Boxen erstellst. Also etwa der Art:
Delphi-Quellcode:
var
  proxy1, proxy2: TComboProxy;
begin
  proxy1 := TComboProxy.Create;
  proxy2 := TComboProxy.Create;

  proxy1.AddControl(FooForm);
  proxy1.AddControl(FooForm); // und hier dank z.B. copy&paste Fehler nochmal proxy1
end;
Die Adressen von proxy1 und proxy2 lägen aber auch nah genug beieinander um den Unterschied trotz drei Mal hinsehen übersehen zu können. Besonders um zehn vor fünf


Edit: Note to self: "delphi <> quote", grad im selben Block.
Edit2: Grammatik lässt auch schon nach. Bett...
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Dawn87

Registriert seit: 15. Feb 2007
Ort: Lüdenscheid
189 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Objektreferenz übergeben (Self)

  Alt 6. Dez 2008, 11:36
Hallo Medium,

in der Tat:
Der von mir gepostet Code ist korrekt und der Fehler lag ganz woanders.

Ich habe ein TButtonCategories-Control und über Drag und Drop füge ich ähnlich wie im Delphi-Designer Controls in ein Panel ein. Das Problem war, dass ich pro Control immer nur eine Instanz vom Objekt hatte und nur eine Referenz übergeben habe. Ist ja auch kein Wunder das die "alle" Objekte an der selben Adresse liegen

Ein

MyNewObj := (MyOldObj.NewInstance as TMyObject); ist hier übrigens ganz praktisch gewesen (für alle die das gleiche Problem haben!)

Grüße
Stefan
  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 01:36 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