Fehler beim Setzen der Property einer Array-Instanz

05/03/2010 - 12:14 von Christian Bode | Report spam
Hallo,

leider sehe ich das Problem nicht, vielleicht könnt ihr mir helfen:

Ich arbeite mit VB 6.0 und versuche gerade krampfhaft Klassen-Arrays
einzusetzen ...
Folgendes Beispiel:

Klasse: clsBearbeitungszeit

' Klasseneigenschaften
Dim strNachname As String
' SETTER der Klasse
Public Property Set Nachname(ByVal vNewValue As Variant)
strNachname = vNewValue
End Property
' GETTER der Klasse
Public Property Get Nachname() As Variant
Nachname = strNachname
End Property

Was ich hier schon nicht verstehe, wieso ich anstatt mit Variant nicht
mit String arbeiten kann, ohne das mir der Compiler meckert. Die
Hintergründe sind mir nicht so ganz klar, vielleicht kann mich jemand
aufklàren.

DataBindingBehavior und DadaSourceBehavior stehen jeweils auf vbNone.

In der Anwendung sieht das ganze dann folgendermaßen aus:

Sub Test()
Dim arrBearbeitungszeit(0) As clsBearbeitungszeit
Set arrBearbeitungszeit(0) = New clsBearbeitungszeit

arrBearbeitungszeit(0).Nachname = "test"
End sub

Hier bekomme ich die Meldung "Objekt erforderlich". Normalerweise
enthàlt die Klasse noch weitere Eigenschaften und zudem ist es ein
dynamisches Array, welches ich redimensioniere. Ich habe es jetzt aber
zu Testzwecken schon auf ein Minimum reduziert und es funktioniert
dennoch nicht.
Was mache ich falsch?

Viele Grüße
Christian
 

Lesen sie die antworten

#1 Peter Götz
05/03/2010 - 12:39 | Warnen spam
Hallo Christian,

Hallo,
leider sehe ich das Problem nicht, vielleicht könnt ihr mir helfen:

Ich arbeite mit VB 6.0 und versuche gerade krampfhaft Klassen-Arrays
einzusetzen ...
Folgendes Beispiel:

Klasse: clsBearbeitungszeit

' Klasseneigenschaften
Dim strNachname As String
' SETTER der Klasse
Public Property Set Nachname(ByVal vNewValue As Variant)
strNachname = vNewValue
End Property



Ein Property Set brauchst Du für Objekte.
Für Deinen String brauchst Du ein Property Let:

Private mNachName as String

Public Property Let NachName(Value As String)
mNachName = Value
End Property

Also ersetze "Property Set" durch "Property Let",
dann klappts auch mit dem String.

' GETTER der Klasse
Public Property Get Nachname() As Variant
Nachname = strNachname
End Property

Was ich hier schon nicht verstehe, wieso ich anstatt mit Variant nicht mit
String arbeiten kann, ohne das mir der Compiler meckert.



s.oben:
weil Du Property Set und Property Let verwechselt hast.

Die Hintergründe sind mir nicht so ganz klar, vielleicht kann mich jemand
aufklàren.



Eine Property Set Prozedur erwartet ein Object.
Da Du einen String übergeben willst brauchst Du
Property Let.


DataBindingBehavior und DadaSourceBehavior stehen jeweils auf vbNone.

In der Anwendung sieht das ganze dann folgendermaßen aus:

Sub Test()
Dim arrBearbeitungszeit(0) As clsBearbeitungszeit
Set arrBearbeitungszeit(0) = New clsBearbeitungszeit

arrBearbeitungszeit(0).Nachname = "test"
End sub

Hier bekomme ich die Meldung "Objekt erforderlich".



Ja, weil Du statt Property Let eine Property Set Prozedur
in Deinem Klassenmodul hast.


Normalerweise enthàlt die Klasse noch weitere Eigenschaften
und zudem ist es ein dynamisches Array, welches ich redimensioniere. Ich
habe es jetzt aber zu Testzwecken schon auf ein Minimum reduziert und es
funktioniert dennoch nicht.
Was mache ich falsch?



s.oben:
Du verwechselst Set und Let.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen