German List und Type

Rallig

Member
Licensed User
Longtime User
Hallo,

ich stehe irgendwie total auf dem Schlauch. Bestimmt irgendwas total simples aber ich sehe es gerade nicht, könnt ihr mir da weiterhelfen?

Code: Copy
Sub Button1_Click
   
   
   XY.Initialize
   XY.xK=10
   XY.yK=20
   
   Schusssammlung.Add(XY)
      
   XY.xK=30
   XY.yK=40
   Schusssammlung.Add(XY)
   
   Dim p As Koordinaten
   p = Schusssammlung.Get(0)
   Msgbox("Button geklickt!",p.xK)
   p = Schusssammlung.Get(1)
   Msgbox("Button geklickt!",p.xK)
End Sub

Die Messageboxen spucken bei mir zweimal 30 aus. Ich denke es müsste ersteinem die 10 und dann die 30 kommen. Wo ist mein Denkfehler?

Unter Globals habe ich stehen:
Code: Copy
   Type Koordinaten(xK As Int,yK As Int)
   Dim XY As Koordinaten

Gruß
Rallig
 
Das Problem liegt hier:

Code: Copy
XY.Initialize
XY.xK=10
XY.yK=20
Schusssammlung.Add(XY)
   
XY.xK=30
XY.yK=40
Schusssammlung.Add(XY)

Du verwendest zweimal das selbe Objekt, d. h. Schusssammlung enthält danach zwei Verweise auf das gleiche Objekt.
Füge vor XY.xK=30 noch ein XY.Initialize hinzu (es wird ein neues Objekt generiert), dann sollte es klappen.
 
Nein. Initialize erzeugt keine neue Objektinstanz sondern setzt die vorhandene nur zurück. Eine neue Instanz wird üblicherweise nur mit Dim erzeugt.

Also

Code: Copy
Dim XY as Koordinaten
XY.Initialize
...

Für ein neues Objekt.
 
Back
Top