Guten Tag,
nachdem ich mit den Klassen etwas anfangen konnte, habe ich spezielle Aufgaben aus dem Hauptprojekt in Klassen ausgelagert, was den Vorteil hat, daß der Programmcode des Hauptprogramms kleiner wurde, und daß die Klasse diversen Modulen oder gar MS Office Programmen zu Verfügung steht.
Anfänglich habe ich einen Verweis auf die Klasse angelegt, womit ich die Klasse direkt dimensionieren konnte:
Public clObjekt As Class_Projekt.Class_Name
Das Anlegen des Objekts clObjekt in dieser Weise hat Vorteil beim Programmieren, da mir alle Routinen der Klasse mit Parametern angezeigt werden. Leider hatte ich einen irren Aufwand mit der Versionsverwaltung bei Änderung einer Klasse, da zwischenzeitlich eine recht große Anzahl von Klassen existieren.
Ich bin dann dazu übergegangen, nicht mehr auf die Klasse zu verweisen und das Objekt clObjekt als Object anzulegen:
Public clObjekt As Object
Set clObjekt = GetWinObj("Class_Projekt.Class_Name", "Bezeichnung")
Public Function GetWinObj(vClasse$, vName$) As Object
On Error Resume Next
Dim loObj As Object
Set loObj = GetObject(, vClasse$)
If Err.Number Then Set loObj = CreateObject(vClasse$)
On Error GoTo 0
If IsEmpty(loObj) Then MsgBox "Zugriff auf " & vName$ & " ist gescheitert!", vbCritical, "System": Exit Function
Set GetWinObj = loObj
End Function
Wenn ich nur einen Aufruf der Klasse benötige, dann:
Call GetWinObj("Class_Projekt.Class_Name", "Bezeichnung").Routine(param)
oder wenn es eine Function ist
Ergebnis = GetWinObj("Class_Projekt.Class_Name", "Bezeichnung").Routine(param)
Das klappt auch super. Meine erste Frage ist, ob es insbesondere bei der Freigabe des Speichers (wenn der Verweis aufgelöst wird) durch diese neue Verfahrensweise Nachteile gibt. Denn der Vorteil ist, daß ich keinen Aufwand mehr habe mit der Versionsverwaltung.
Nun schlage ich mich mit einem anderen Problem herum. Wie gesagt, die Anzahl der Klasse ist ziemlich groß, und ich muß gestehen, daß ich etwas den Überblick verloren habe, welche Klassen ein Programm oder auch Klassen benötigen. Z.B:
Programmprojekt
- benötigt Klasse1
- benötigt Klasse2
- benötigt Klasse3
Ist ein Verweis auf die Klasse angelegt, dann ermittelt VBasic alle erforderlichen Klassen und packt alles zusammen für die Installation. Ohne angelegte Verweise muß ich selbst darauf achten, daß alle erforderlichen Klassen in das Installationspaket aufgenommen werden.
Um mir auch das zu erleichtern, bin ich auf die Idee gekommen, bestimmte Klassen, die häufig zusammen benötigt werden können, in ein Projekt zusammen zu fassen. Bisher hat nahezu jede Klasse ihr eigenes Projekt. Also
Klasse1 --> Class1_Projekt.Class1_Name
Klasse2 --> Class2_Projekt.Class2_Name
Klasse3 --> Class3_Projekt.Class3_Name
Die Klassen möchte ich nun in ein Projekt zusammenfassen:
Klasse1 --> Class_Projekt.Class1_Name
Klasse2 --> Class_Projekt.Class2_Name
Klasse3 --> Class_Projekt.Class3_Name
Meine Frage ist nun: Ist die Speicherbelastung höher, wenn das Programm nur die Klasse2 benötigt, und diese Klasse jetzt mit anderen Klassen zusammen in Class_Projekt statt alleine in Class2_Projekt steckt. Oder wird nur die Klasse geladen, die auch aktuell benötigt wird?
Ich kämpfe nämlich mit der Speicher- bzw. Resourcenbelastung.
Ich arbeite mit VBasic 6 unter Win98 (ich weiß, daß einige von Euch das nur aus dem Museeum kennen, funktioniert aber dennoch tadellos)
Für jede Anmerkung ein herzliches Danke.
Beste Grüße
Michael
|