Hallo!
Ich habe folgendes Problem: Ich habe in meinem Programm 2 klassen definiert:
Class1 heißt Simplextab:
Class2 wird von Class1 verwendet und heißt S_TAb
Ich nehme an, dass man daran deutlich erkennt, dass es sich um Klassen handelt, die für die Lösung eines LP-Problems mit dem Simplexalgorithmus benutzt werden.
Jedenfalls habe ich eine Prozedur geschrieben, die eine Simplexiterration durchführt. In dieser werden 2 Instanzen der Klasse Simplextab erstellt. [Eine soll das alte Tableau darstellen und die andere soll das nächste Tableau darstellen (Iterrationstableau)]
Das wesentliche ist jedoch, dass wenn ich die Eigenschaft der einen Instanz ändere, die andere Instanz ihre Eigenschaft auch ändert
Dies ist natürlich nicht die ganze Funktion sondern nur ein Teil, der dieses Problem zeigt.
Wenn ich nun die Funktion debugge stellt sich raus, das Old_Stt.Tableau auch sein Wert geändert hat und zwar:
NextSTT.Tableau.B(c) = Old_Stt.Tableau.B(c)
NextSTT.Tableau.NB(c) = Old_Stt.Tableau.NB(c)
Ich bitte um Hilfe, denn ich weiß wirklich nicht wie das passiert sein kann...
Mfg GoodOld1
Ich habe folgendes Problem: Ich habe in meinem Programm 2 klassen definiert:
Class1 heißt Simplextab:
Code:
Public Property Set Tableau(ByVal Tabb As S_Tab)
Set STab = Tabb
End Property
Public Property Get Tableau() As S_Tab
Set Tableau = STab
End Property
Class2 wird von Class1 verwendet und heißt S_TAb
Code:
Dim ST As S_Tab1
Private Type S_Tab1
BasisVarAnz As Integer
NichtbasisVarAnz As Integer
B() As String
NB() As String
Zellen() As Single
End Type
Public Property Let BasisVarAnz(ByVal BVA As Integer)
ST.BasisVarAnz = BVA
End Property
Public Property Get BasisVarAnz() As Integer
BasisVarAnz = ST.BasisVarAnz
End Property
Public Property Let NichtbasisVarAnz(ByVal NBVA As Integer)
ST.NichtbasisVarAnz = NBVA
End Property
Public Property Get NichtbasisVarAnz() As Integer
NichtbasisVarAnz = ST.NichtbasisVarAnz
End Property
Ich nehme an, dass man daran deutlich erkennt, dass es sich um Klassen handelt, die für die Lösung eines LP-Problems mit dem Simplexalgorithmus benutzt werden.
Jedenfalls habe ich eine Prozedur geschrieben, die eine Simplexiterration durchführt. In dieser werden 2 Instanzen der Klasse Simplextab erstellt. [Eine soll das alte Tableau darstellen und die andere soll das nächste Tableau darstellen (Iterrationstableau)]
Das wesentliche ist jedoch, dass wenn ich die Eigenschaft der einen Instanz ändere, die andere Instanz ihre Eigenschaft auch ändert
Code:
Function Next_STT(ByVal STT1 As Simplextab, StoppReason As String) As Simplextab
Dim NextSTT As New Simplextab
Set NextSTT = STT1
Dim Old_Stt As New Simplextab
Set Old_Stt = STT1
NB_1 = Old_Stt.Tableau.NB(c)
B_1 = Old_Stt.Tableau.B(r)
NextSTT.Tableau.B(c) = NB_1
NextSTT.Tableau.NB(r) = B_1
End Function
Dies ist natürlich nicht die ganze Funktion sondern nur ein Teil, der dieses Problem zeigt.
Wenn ich nun die Funktion debugge stellt sich raus, das Old_Stt.Tableau auch sein Wert geändert hat und zwar:
NextSTT.Tableau.B(c) = Old_Stt.Tableau.B(c)
NextSTT.Tableau.NB(c) = Old_Stt.Tableau.NB(c)
Ich bitte um Hilfe, denn ich weiß wirklich nicht wie das passiert sein kann...
Mfg GoodOld1
Zuletzt bearbeitet: