VB6 globale Array Property

Hey!
Ich habe ein Problem:
Ich habe eine globale Array Property „Berechtigungen“. Diese ist in der Klasse globalpr.bas.
Jetzt versuche ich in einer anderen Klasse Berechtigungen(0) einen Wert zuzuweisen. Dabei bekomme ich jedoch immer die Fehlermeldung:

Fehler beim Kompilieren:
Zuweisung an schreibgeschützte Eigenschaft nicht möglich.

Hier mein Codeausschnitt:

'------Property Class (globalpr.bas): ------
Option Compare Database

Private pBerechtigungen(7) As Variant

'Berechtigungen des aktuell angemeldeten Benutzers
Public Property Let Berechtigungen(ByRef Value() As Variant)
pBerechtigungen() = Value
Call PropertyChanged(„Berechtigungen“)
End Property
Public Property Get Berechtigungen() As Variant()
Berechtigungen = pBerechtigungen()
End Property
'-------Ende Property Class (globalpr.bas)---------

Ausschnitt aus der Klasse aus der in die Property geschrieben wird:

'--------Form.cls------------
Private Sub Form_Current()
Berechtigungen(0) = „read“
End Sub
'--------Form.cls Ende--------
Woran kann das liegen?
Bitte um eure Hilfe.
Grüße
soekoh

Hallo soekoh,
Ist zwar schon recht lange her das ich unter VB6 programmiert habe aber folgende 2 Vorschläge hätte ich:

  1. Vorschlag:
    versuche mal in der Property Let Berechtigungen(…)
    den übergebenen Wert erst in eine lokale Variable zu übergeben und danach die Lokale Variable der Property zu übergeben. …
  2. Vorschlag.
    Definiere den Parameter Value() nicht byRef sondern byValue … liegt vielleicht an der Zugriffsmethode…

Stimmt eigentlich der Index, hab unter den verschieden Sprachen jetzt die Erfahrung gemacht das manchmal der Index = 0 schreibgeschützt ist.

Gruss

Lösung:

Private pBerechtigungen(7) As Variant

'Berechtigungen des aktuell angemeldeten Benutzers
Public Property Let Berechtigungen(Index, Value)
pBerechtigungen(Index) = Value
End Property
Public Property Get Berechtigungen(Index) As Variant
Berechtigung = pBerechtigungen(Index)
End Property

Private Sub Form()
Berechtigungen(0) = „read“
End Sub

von http://www.vbarchiv.net/forum/id3_i79802t79802_vb6-g…

Hallo soekoh

Ich könnte mir vorstellen, dass das Array nicht dimensioniert ist.

Also ein Beispiel:
Dim myArr() as String
myArr(0) = „Hallo“ 'GEHT NICHT

Das würde aber gehen:
Dim myArr() As String
If myArr Is Nothing Then Redim myArr(0)
If UBound(myArr)

Sorry, leider kann ich hier nicht weiterhefen

Gruß Pensibald

Hallo,
Leider blick ich noch nicht ganz durch, liegt aber wohl er an meinem Zustand (wiesn)…
Das einzige was mich wundert warum kein DIM vor dem Private steht und warum sie Private und nicht Public ist.
versuch doch einfach mal
DIm Public pBerechtigungen(7) As Variant

mfg jonny

vergiss meine vorhergehende antwort … und versucht mal:

Public pBerechtigungen(7) As Variant

mfg joe