AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit Objektinstanzpointer

Ein Thema von sott1981 · begonnen am 13. Sep 2011 · letzter Beitrag vom 13. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
sott1981

Registriert seit: 13. Sep 2011
6 Beiträge
 
#1

Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 14:07
Hallo!

Habe ein großes Problem und finde einfach nicht die richtige Lösung.


Ich habe 2 verschachtelte TLists.

DeviceList->ItemList


Dabei Nutze ich TItem.OnDataChanged als Multicastsender.

-> procedure OnDataChanged(Sender:TObject;Valueouble);

Jetzt muss ich leider herausbekommen welcher Item OnDataChanged auslöst.


In meiner Itemlist habe ich Items $159ADD8,$159B120 und 159B198.
Aber @Sender entspricht niemals meinen Items.

if Item[I] = Sender then
if @Item[i] = @Sender usw.

Wollte selbst forschen aber wenn ich folgendes Konstrukt mehrfach anwende.

neuesItem := TItem.Create;
DeviceList.ItemList.Add(neuesItem);
neuesItem.Text = IntToHex(integer(@neuesItem),8);

dann haben alle meine Items den gleichen Namen.


Was übersehe ich die ganze Zeit. Bin lamgsam voll verwirrt.

Habt Dank für jeden Hinweis.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 14:24
Hallo und Willkommen in der DP ,

ich habe Dein Konstrukt noch nicht so ganz durchblickt. Sind beide Listen vom Typ TList? Und ItemList ist eine Property von DeviceList? Oder doch eher eine jedes Devices in der DeviceList? Erklär doch noch einmal die Struktur im Detail.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
sott1981

Registriert seit: 13. Sep 2011
6 Beiträge
 
#3

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 14:35
Hoffe das ist eher verständlich.
Habe eine Liste mit Devices und jedes Device hat ne Liste Items.

Dabei representiert Item einen Messwert-Event. Diesen muss ich gleichzeitig an verschiedene Grafische Darstellungen weiterleiten(Deswegen Multicast).

Type TFormMain = class(TForm)

DeviceList : TList<TDevice>;
end;

type TDevice = class

ItemList : TList<Item>;
end;

type TItem = class

public Text : String;
end;

procedure TFormMain.Create()
var d:TDevice;
i:Titem;
begin



DeviceList := TList<TDevice>.Create;

d := TDevice.create;

DeviceList.Add(d);


i:=TItem.Create;
i.Text = IntToHex(integer(@i),8);
d.ItemList.add(i);


end;

Type TFormMain = class(TForm)

DeviceList : TList<TDevice>;
end;

type TDevice = class

ItemList : TList<Item>;
end;

type TItem = class

public Text : String;
end;

procedure TFormMain.Create()
var d:TDevice;
i:Titem;
begin



DeviceList := TList<TDevice>.Create;

d := TDevice.create;

DeviceList.Add(d);


i:=TItem.Create;
i.Text = IntToHex(integer(@i),8);
d.ItemList.add(i);


end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 14:46
Irgendwie ist der Code wohl versehentlich doppelt vorhanden. Und benutze bitte Delphi-Tags (entweder über die "Helm"-Schaltfläche im Editor oder händisch mittels [ delphi] und [ /delphi] ohne die Leerzeichen). Gut, Du hast also 2 generische TLists, die Hierarchie ist dann DeviceList -> TDevice -> TItemList -> TItem, habe ich das soweit richtig gelesen? Und ist das per C&P eingefügter Code, oder hast Du den händisch abgeschrieben?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#5

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 14:47
i:=TItem.Create;
i.Text = IntToHex(integer(@i),8);
d.ItemList.add(i);
Objekt-Variablen sind bereits Pointer die auf das Objekt verweisen, deshalb ermittelt @i die lokale Adresse der Variablen i, nicht wie gewünscht die Adresse des Objekt im Speicher.

 i.Text = IntToHex(Integer(Pointer(i)), 8);
  Mit Zitat antworten Zitat
sott1981

Registriert seit: 13. Sep 2011
6 Beiträge
 
#6

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 14:56
Ok langsem lerne ich.
Danke schon mal Blup. Ihc wußte das Instanzen Objekte darstellen und wollte das mach um die Adresse vergleichen zu können.

Schließlich ist mein problem folgendes im EventHandler.
Der Vergleich mit dem ich Quelle meines Events erwischen will passt nicht.
Habe auch schon @I = @E probiert bringt nichts.

Langsam habe ich den verdacht das mir die TList den Ärger bereitet.

Delphi-Quellcode:
procedure TFormChart(Sender:TObject; Value:Double)
var I:Integer;
begin
   for I := 0 to FItemLineSeries.Count - 1 do
   begin
      if FDeviceList[I].Item = TSpsItem(Sender) then
      begin
            FItemLineSeries[I].Data.Add(data); // Wert anfügen;
            break;
      end;
   end;
end;


Hier nochmal das Grundgerüst

Delphi-Quellcode:
Type TFormMain = class(TForm)

   DeviceList : TList<TDevice>;
end;

type TDevice = class

   ItemList : TList<Item>;
end;

type TItem = class

   public Text : String;
end;

procedure TFormMain.Create()
var   d:TDevice;
   i:Titem;
begin


   
   DeviceList := TList<TDevice>.Create;
   
   d := TDevice.create;
   
   DeviceList.Add(d);
   
   
   i:=TItem.Create;
   i.Text = IntToHex(integer(@i),8);
   d.ItemList.add(i);
   

end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 14:58
Müsste es nicht

ItemList : TList<TItem>; heißen? Und ich bin etwas erstaunt, dass der Compiler wegen der fehlenden Forward-Deklarationen nicht meckert. Allerdings bin ich ehrlich gesagt immer noch Newbee, was Generics angeht, vielleicht ist das da ja etwas anders.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
sott1981

Registriert seit: 13. Sep 2011
6 Beiträge
 
#8

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 15:03
Gut bin selber erst seit ner Woche mit Delphi drann.

Aber ItemList stellt doch noch nur den Bezeichner dar ?

Also Name : GenericType<DatenType>


Ach je ich will zurück an mein C# das war vorhin das 394356mal das ich

var Integer:I; geschrieben hab.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 15:09
Was ich meinte: statt TList<Item> TList<TItem>, es soll ja eine Liste der Instanzen der Klasse TItem sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
sott1981

Registriert seit: 13. Sep 2011
6 Beiträge
 
#10

AW: Probleme mit Objektinstanzpointer

  Alt 13. Sep 2011, 15:14
ach jetzt ne TItem stimmt schon
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:16 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