Autor Beitrag
Exabyte
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 19.07.11 23:14 
Hallo zusammen!

Der Titel sagt eigentlich schon alles, gibt es eine Möglichkeit einer Variablen a eine Variable b zuzuordnen, sodass wenn b geändert wird, auch a geändert wird?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 20.07.11 00:04 
Du solltest dir die Unterscheidung zwischen Valuetypes(Werttypen) und Referencetypes(Verweistypen) klar machen. Wenn du dann durchschaust auf was für einen Typ deine konkreten Variablen verweisen bzw. was für einen Typ deine Variable enthalten erübrigt sich deine Frage vermutlich.
Exabyte Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 20.07.11 09:08 
Hi, die Frage ist mir aber immer noch icht ganz klar. Das Problem ist das Folgende:

Wenn ich innerhalb einer Funktion einer Variable, die ich zum Zwischenspeichern brauche, einen Wert zuweise (in diesem Fall die Referenz eines ListViewItems), wie erreiche ich, dass wenn sich die Variable ändert, dass sich auch das Objekt, auf welches das ListViewItem referriert, ändert? Dazu müsste doch die Variable auf die Referenz des ListViewItems referrieren? (Ich kenne nur das Schlüsselwort "ref" bei Übergabeparametern).
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 20.07.11 09:31 
ListViewItem ist eine Klasse, also ein Referenztyp, wenn deine Variable also ein Verweis auf ein ListViewItem ist sollte jede Variable (also auch zum Beispiel ein ListView zu dem dieses ListViewItem gehört) die auch auf das ListViewItem verweist dies genauso sehen. Wenn das bei dir nicht passiert hast du es geschafft eine Kopie des ListViewItems zu erstellen die sich dann natürlich unabhängig verhält.

Oder soll ich deine Frage so verstehen das du deiner Variablen ein anderes ListViewItem zuweisen willst? Also du nicht etwas im ListViewItem ändern willst sondern die Referenz selbst, und jeder andere Variable die bisher auf ein 'altes' ListViewItem verwiesen hat jetzt auch auf das andere ListViewItem verweisen soll? Dann könnte man z.B. eine Proxy Klasse schreiben auf die alle verweisen. Da sich der Verweis auf den Proxy nie ändert sondern man nur ändert welche Klasse vom Proxy vertreten wird sollten das dann wieder alle Variablen 'mitbekommen'. Ist aber in diesem konkreten Fall wenn das auch innerhalb eines ListViews funktionieren soll den man nicht im Griff hat eher schwierig umzusetzen. 2.te Möglichkeit wäre einfach keine 2.te Variable zu haben ;) Indem man zum Beispiel aus der Variablen eine Property macht die auf die Quellvariable zugreift aber keine eigene Referenz auf das ListViewItem hält.
Exabyte Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 20.07.11 11:34 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
ListViewItem ist eine Klasse, also ein Referenztyp, wenn deine Variable also ein Verweis auf ein ListViewItem ist sollte jede Variable (also auch zum Beispiel ein ListView zu dem dieses ListViewItem gehört) die auch auf das ListViewItem verweist dies genauso sehen. Wenn das bei dir nicht passiert hast du es geschafft eine Kopie des ListViewItems zu erstellen die sich dann natürlich unabhängig verhält.


Damit hat sich das Problem erledigt :) . Ich weiss nicht so recht, was ich überlegt habe, aber mir war offenbar nicht ganz klar, dass ListViewItem.Tag ein Objekt ist und deshalb standartmässig ein Reference-Type :? .