Thema Datum  Von Nutzer Rating
Antwort
Rot Speicherbelastung durch Klassen
25.06.2008 13:07:33 madam
NotSolved

Ansicht des Beitrags:
Von:
madam
Datum:
25.06.2008 13:07:33
Views:
1626
Rating: Antwort:
  Ja
Thema:
Speicherbelastung durch Klassen
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

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Speicherbelastung durch Klassen
25.06.2008 13:07:33 madam
NotSolved