AX-Exe/-Dll -> Property-Value von falscher Instanz?

18/01/2011 - 22:48 von Heinz-Mario Frühbeis | Report spam
Hallo!

Gegeben:
1 ActiveX-Dll
1 ActiveX-Exe

In der Dll rufe ich zweimal die AX-Exe auf
X = CreateObject("Projekt.Klasse")
Y = CreateObject("Projekt.Klasse")

in der AX-Exe ist ein Modul M1
Im Modul ist eine Variable meineKlassenDll
Im Ax-Exe-Klassenmodul dann ->
Private mTest as Integer
Public Property Get Test()
Test = mTest
End Property
Public Property Let Test(byVal nVal as Integer )
mTest = nVal
M1.MachAuchWas
End Property

Class_Initialize
Set meineKlassenDll = Me

des weiteren ->
Private Sub MachWas()
Test = 1 ' Hier fàngt es an spannend zu werden!
End Sub

Im Modul M1 dann ->
Public Sub MachAuchWas()
Dim VarValue as Integer
VarValue = meineKlassenDll.Test
VarValue = 0 ' <- ?

Denn hier ist dann der Wert der anderen Instanz der AX-Exe vom
Property "Test". Obwohl hier doch eigentlich VarValue = 1 sein sollte.

End Sub

Ich habe das getestet.
Und zwar habe ich ganz spezifische Variablen abgefragt im Property "Test",
wo ich ganz genau weiß, das die eine Instanz einen anderen Wert hat als eben
die andere Instanz.
Im Property Let war dann der Wert der richtigen Instanz und im Property Get
dann der Wert der Anderen (also bei VarValue = meineKlassenDll.Test).

Was làuft denn da ab?
Warum ist das so?
Kurz: Kann mir bitte jemand dabei helfen?

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
19/01/2011 - 12:42 | Warnen spam
"Heinz-Mario Frühbeis" schrieb ...
Hallo!

Gegeben:
1 ActiveX-Dll
1 ActiveX-Exe

In der Dll rufe ich zweimal die AX-Exe auf
X = CreateObject("Projekt.Klasse")
Y = CreateObject("Projekt.Klasse")

in der AX-Exe ist ein Modul M1
Im Modul ist eine Variable meineKlassenDll
Im Ax-Exe-Klassenmodul dann ->
Private mTest as Integer
Public Property Get Test()
Test = mTest
End Property
Public Property Let Test(byVal nVal as Integer )
mTest = nVal
M1.MachAuchWas
End Property

Class_Initialize
Set meineKlassenDll = Me

des weiteren ->
Private Sub MachWas()
Test = 1 ' Hier fàngt es an spannend zu werden!
End Sub

Im Modul M1 dann ->
Public Sub MachAuchWas()
Dim VarValue as Integer
VarValue = meineKlassenDll.Test
VarValue = 0 ' <- ?

Denn hier ist dann der Wert der anderen Instanz der AX-Exe vom
Property "Test". Obwohl hier doch eigentlich VarValue = 1 sein sollte.

End Sub

Ich habe das getestet.
Und zwar habe ich ganz spezifische Variablen abgefragt im Property "Test",
wo ich ganz genau weiß, das die eine Instanz einen anderen Wert hat als
eben die andere Instanz.
Im Property Let war dann der Wert der richtigen Instanz und im Property
Get dann der Wert der Anderen (also bei VarValue = meineKlassenDll.Test).



Ich habe jetzt mal eine Public Variable "X_Hwnd" im Modul deklariert.
Und immer, wenn eine Form der AX-Exe aktiviert wird die hWnd der Form in die
Variable übergeben ...

Wenn man im Modul eine Varible X als Public deklariert, dann gilt diese
Variable wohl für *alle* Instanzen der DLL?
Und das ist auch so gewollt?

Mit Gruß
Heinz-Mario Frühbeis

Ähnliche fragen