Problem med Visual Basic .NET och vbscript

Permalänk
Medlem

Problem med Visual Basic .NET och vbscript

Jag har ett envist problem med en DLL som är skriven i Visual Basic .NET. Jag använder vbscript för att skapa ett objekt av en klass som finns i DLL:en med hjälp av createobject(). Så långt fungerar allt väl. Jag kommer åt de variabler som finns direkt i den klassen. Mina problem börjar när jag försöker accessa ett annat objekt som jag instantierar inuti klassen. Detta objekt innehåller två arrayer (en long och en string) och när jag försöker skriva eller läsa dessa så får jag ett felmeddelande.

Jag misstänker att jag antingen gör fel när jag instantierar mitt objekt inuti klassen eller att mina arrayer(properties) är felaktiga.

Säg till om detta är otydligt så ska jag försöka få till kodexempel.

Tacksam för hjälp!

Visa signatur

i7-920 || Asus P6T SE || 12 GB DDR3 || GTX 970

Permalänk
Medlem

Här följer lite exempelkod (dock i psuedo-format):

Klassen ser ut ungefär så här:
----------------------------------------

Namespace XXX
Public Class class1
Private testAmount As Long (denna kommer jag åt)
Private test Code As String (denna kommer jag åt)
Dim testData As New ABCData()
End Class
End Namespace

ABCDAta:
-------------
Namespace XXX
Public Class ABCData
Private _array1(8) As Long
Private _array2(8) As Long
Public Property Array1(ByVal index As Long) As Long
Get
Return _array1(index)
End Get
Set(ByVal Value As Long)
_array2(index) = Value
End Set
End Property
Public Property Array2(ByVal index As Long) As Long
Get
Return _array2(index)
End Get
Set(ByVal Value As Long)
_array2(index) = Value
End Set
End Property
End Class
End Namespace

VBScript:
-------------
Dim fc
Set fc = CREATEOBJECT("XXX.Class1")
fc.testData.Array1(1) = 1 (Detta fungerar ej)

(Indenteringen blev tyvärr förstörd)

Visa signatur

i7-920 || Asus P6T SE || 12 GB DDR3 || GTX 970

Permalänk
Medlem
Skrivet av martin_p:

Klassen ser ut ungefär så här:

hur ungefär är "ungefär"?
det jag tänker på är att om man bara anger Dim är det samma sak som att sätta variabeln som Private.

Testa följande:

Namespace XXX Public Class class1 Private testAmount As Long ' kommer du verkligen åt denna? Private? ' Private test Code As String ' kommer du verkligen åt denna? Private? ' Public testData As New ABCData() End Class End Namespace

Vad får du för felmeddelande föressten?

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem
Skrivet av jovnas:

hur ungefär är "ungefär"?
det jag tänker på är att om man bara anger Dim är det samma sak som att sätta variabeln som Private.

Testa följande:

Namespace XXX Public Class class1 Private testAmount As Long ' kommer du verkligen åt denna? Private? ' Private test Code As String ' kommer du verkligen åt denna? Private? ' Public testData As New ABCData() End Class End Namespace

Vad får du för felmeddelande föressten?

Tack för ditt svar. Jag tror att jag testat den lösningen. Visste dock inte att Dim var private som default. Jag har inte fått med all kod ser jag nu. Jag har properties längre ner som tillåter access till det som är deklarerat som private.

Jag har tyvärr inte felmeddelandet framför mig men det är något i stil med "wrong number of arguments or invalid property assignment"

Visa signatur

i7-920 || Asus P6T SE || 12 GB DDR3 || GTX 970

Permalänk
Medlem

Min spontana känsla är att problemet grundar sig i att jag försöker instantiera ett objekt inuti en annan klass. Jag är lite osäker på hur jag borde göra detta. Objektet jag instantierar har i sin tur properties så i princip så vill jag använda följande syntax från mitt VBScript:

objekt1.objekt2.property1(x) = x

Där min property alltså är en array.

Visa signatur

i7-920 || Asus P6T SE || 12 GB DDR3 || GTX 970

Permalänk
Medlem

Jag gör ett nytt försök här då jag sitter fast. Det jag försöker med just nu är att skapa en array i min C# dll som ska vara publik och åtkomlig från mitt VBSCript. Denna array ligger inuti i en egen klass och klassen instansieras från VBScriptet.

Jag lyckas dock inte alls med detta trots att jag försökt det mesta. Någon som har något bra tips för hur man ska göra detta?

Visa signatur

i7-920 || Asus P6T SE || 12 GB DDR3 || GTX 970