HiHo,
ich habe eine VB-Projektgruppe mit mehreren DLLs und OCX. Wie kann ich auf eine Variable oder Datenstruktur gemeinsam aus allen Teilprogrammen zugreifen.
Danke für alle Hinweise,
Tom
HiHo,
ich habe eine VB-Projektgruppe mit mehreren DLLs und OCX. Wie kann ich auf eine Variable oder Datenstruktur gemeinsam aus allen Teilprogrammen zugreifen.
Danke für alle Hinweise,
Tom
Hallo Thomas
Definiere einfach in einem ‚Modul‘
globale Variablen. Diese Stehen dann
auch anderen (Formularen, Classen, OCX)
zur Verfügung.
' Variablen
Global [Static] g\_VarName as VarType
' Enums
Public Enum enEnumName
' ...
End Enum
Global g\_enVarName as enEnumName
Gruss
Chris
Ja schon klar. Aber wenn ich in DLL-1 die Daten in die Struktur einlese, und dann in DLL-2 darauf zugreife, steht natürlich nichts drin. Das ist das Problem, das ich lösen will!
Gruß, Tom
speichere die Daten „außerhalb“, etwa in der regsitry oder einer gemeinsam genutzten datei.
Du hast recht.
Benutzerdefinierte Datentypen können
nicht über Klassengrenzen hinweg gelten!
Das verhindert der Compiler.
Bei allen anderen Datentypen gehts.
Probiers doch mit einer Klasse, die
die benötigten Daten speichert.
Sie kann als Datenmember deinen Datentyp
aufnehmen und bietet öffentliche Properties
um diese Daten zu manipulieren.
Gruss
Christoph
Beispiel für Interessierte:
(Codemodule jeweils neu einfügen und Code copieren:smile:
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
' Klassenmodul 'Class1.cls'
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Option Explicit
Private Type udtYourType
ID As Long
Text As String
End Type
Private m\_Type As udtYourType
Public Property Get ID() As Long
ID = m\_Type.ID
End Property
Public Property Get Text() As String
Text = m\_Type.Text
End Property
Public Property Let ID(ByVal nID As Long)
m\_Type.ID = nID
End Property
Public Property Let Text(ByVal sText As String)
m\_Type.Text = sText
End Property
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
' Klassenmodul 'Class2.cls'
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Option Explicit
Public Sub InitClass1(ByRef clsClass1 As Class1)
clsClass1.ID = 30984
clsClass1.Text = "Hallo Welt"
End Sub
Public Sub ClearClass1(ByRef clsClass1 As Class1)
clsClass1.ID = 0
clsClass1.Text = ""
End Sub
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
' formular 'Form1.frm'
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Option Explicit
Dim clsEins As Class1
Dim clsZwei As Class2
Private Sub Form\_Load()
Set clsEins = New Class1
Set clsZwei = New Class2
clsZwei.InitClass1 clsEins
Debug.Print clsEins.ID
Debug.Print clsEins.Text
clsZwei.ClearClass1 clsEins
Debug.Print clsEins.ID
Debug.Print clsEins.Text
End Sub