Kommunikation zwischen Klassen

hbrauchl

Mitglied
Hallo zusammen!

Habe folgendes Problem:

Ich würde gerne zwischen meinem Hauptprogramm (EXE) und meiner selbgeschriebenen
DLL Daten austauschen.
Habe darum folgende Klasse geschrieben (die in der DLL inkludiert ist):

Code:
' ##### Klasse Test #####

Option Explicit

Private Elemente As Integer

Public Function SetzeStandard()
   Groesse = 815
End Function

Public Property Get Groesse() As Variant
    Groesse = Elemente
End Property

Public Property Let Groesse(ByVal Wert As Variant)
    Elemente = Wert
End Property

Public Property Set Groesse(Wert As Variant)
    Elemente = Wert
End Property

'#### Ende Klasse Test ####

Setze ich nun im Hauptprogramm den Wert Groesse, so ist der Wert
in der DLL wieder verschwunden (ist gleich 0).

Code:
'###### MAIN (Exe) #######

Dim Test_Interface As New Test

Test_Interface.Groesse = 345
'###### Ende MAIN (Exe) #######

und nun die DLL:

Code:
Private Sub Form_Load()
Dim SkEd As New Test

   Label1.Caption = SkEd.Groesse

End Sub

Ich hoffe es kann mir wer helfen.

Vielen Dank im voraus.


LG,
Hans
 
Zuletzt bearbeitet:
Hallo, in der Definition darf es bei dem Wert der sich ändert nicht "ByVAL" heißen, sondern es muß heißen "ByREF" dass heißt by Reference und bedeutet dass mit dem alten Wert referenziert wird!!

Auch LG,
Backnetstalker
 
Hi zusammen,

Backnetstalker hat gesagt.:
Hallo, in der Definition darf es bei dem Wert der sich ändert nicht "ByVAL" heißen, sondern es muß heißen "ByREF" dass heißt by Reference und bedeutet dass mit dem alten Wert referenziert wird!!

Hmmmmm......

also wenn mich nicht alles täusch, ist es in dem Fall sogar korrekt, dass per Value übergeben wird. Die Klasse soll doch den Wert so speichern, dass er nicht mehr geändert werden kann.

Das Problem ist aus meiner SIcht ein anderes:

Code:
'###### MAIN (Exe) ####### 
Dim Test_Interface As New Test 
Test_Interface.Groesse = 345
'###### Ende MAIN (Exe) #######

Code:
Private Sub Form_Load()
  Dim SkEd As New Test
    Label1.Caption = SkEd.Groesse
End Sub

Es handels sich hierbei um zwei unterschiedliche Instanzen der Klasse, die nichts voneinander wissen. Das kann so nicht funktionieren.

Desweiteren sehe ich einen Fehler in der Anweisung
Code:
Public Function SetzeStandard()
   Groesse = 815
End Function

Besser währe in der Funktion
Element = 815

Gruß
Das Orakel
 
Hi Zusammen!

Und wie kann man das machen, daß beide Instanzen was "voneinander wissen"?

Danke im voraus.


LG,
Hans
 
Hi hbrauchl,

der einfachste Weg ist der, die Instanz in einem Modul zu deklarieren. Damit steht sie allen Prozeduren (bis auf Klassen) Deines Projektes zur Verfügung.

Gruß
Das Orakel
 
]Hi zusammen,



Hmmmmm......

also wenn mich nicht alles täusch, ist es in dem Fall sogar korrekt, dass per Value übergeben wird. Die Klasse soll doch den Wert so speichern, dass er nicht mehr geändert werden kann. :confused:
Bei Byref hat aber jede Sub und jedes Modul seinen eigenen Speicherbereich für den Wert, was bedeutet dass die übergebenen Werte nicht ankommen.... Schau mal im DEBUGGER, Orakel
 
Zurück