UDT nachträglich manipulieren

07/02/2011 - 12:21 von Heinz-Mario Frühbeis | Report spam
Hallo!

Ich habe hier ein UDT, das ich in einer Collection abspeichere.
Bsp.:
Private Type myType
Val1 As String
Val2 As Long
End Type
Dim C As Collection

Private Sub Init()
Set C = New Collection
End Sub

Private Sub DoSome()
Dim Tp As myType
Tp.Val1 = "Hallo"
Tp.Val2 = 2334
C.Add Tp
End Sub

Private Sub DoOther()
Dim Tp As myType
Dim i As Integer
Dim Str as String
For i = 1 To C.Count
Tp = C.Item(i)
If Tp.Val2 = 2334 Then
Tp.Val1 = "HalloDu"
Str = Tp.Val1
' Str = "HalloDu"
' Hier ist Tp.Val1 = "HalloDu"
End If
Next i
End Sub

Private Sub CheckTp()
Dim Tp As myType
Dim i As Integer
Dim Str as String
For i = 1 To C.Count
Tp = C.Item(i)
If Tp.Val2 = 2334 Then
Str = Tp.Val1
' Hier ist Str = "Hallo"
' Hier ist dann also wieder Tp.Val1 = "Hallo"
End If
Next i
End Sub

Wie kann ich denn ein UDT erfolgreich manipulieren?

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Helmut_Meukel
07/02/2011 - 13:04 | Warnen spam
Wo hast Du diesen Code überhaupt stehen?

Von der generellen Problematik einmal abgesehen, du weist in DoOther
(in einer Scheife) der lokalen Variablen Tp nacheinander die jeweiligen
Werte der in der Collection gespeicherten UDTs zu (das ist ein Kopier-
vorgang, keine Gleichsetzung, eine UDT ist *kein* Objekt!).
Dann veànderst du nur die Werte dieser lokalen Variablen - nicht der
gespeicherten UDT.

Helmut.

Heinz-Mario Frühbeis stellte die Frage :

Ich habe hier ein UDT, das ich in einer Collection abspeichere.
Bsp.:
Private Type myType
Val1 As String
Val2 As Long
End Type
Dim C As Collection

Private Sub Init()
Set C = New Collection
End Sub

Private Sub DoSome()
Dim Tp As myType
Tp.Val1 = "Hallo"
Tp.Val2 = 2334
C.Add Tp
End Sub

Private Sub DoOther()
Dim Tp As myType
Dim i As Integer
Dim Str as String
For i = 1 To C.Count
Tp = C.Item(i)
If Tp.Val2 = 2334 Then
Tp.Val1 = "HalloDu"
Str = Tp.Val1
' Str = "HalloDu"
' Hier ist Tp.Val1 = "HalloDu"
End If
Next i
End Sub

Private Sub CheckTp()
Dim Tp As myType
Dim i As Integer
Dim Str as String
For i = 1 To C.Count
Tp = C.Item(i)
If Tp.Val2 = 2334 Then
Str = Tp.Val1
' Hier ist Str = "Hallo"
' Hier ist dann also wieder Tp.Val1 = "Hallo"
End If
Next i
End Sub

Wie kann ich denn ein UDT erfolgreich manipulieren?

Ähnliche fragen