Variablen sharen

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