Speicherprobleme mit VB6-Projekt

Hallo,

ich habe mit VB6 ein Programm geschrieben, das ansonsten auch ganz manierlich läuft, oder besser gesagt gelaufen ist. Nachdem ich nun auf ein paar Formularen noch ein paar Textfelder nachgetragen habe, weil ich noch ein paar zusätzliche Felder benötigt habe, erhalte ich beim Programm andauernd die Meldung, daß nicht genügend Speicher vorhanden sei und das Programm wird beendet. Das gleiche passiert mir übrigens leider ebenfalls mit der fertig compilierten exe-Datei.

  • Kann mir jemand sagen, wie man dieses Problem evtl. lösen kann.
  • Gibt es irgendwo eine Einstellung, mit der man den für das Programm zur verfügung stehenden Speicher erweitern kann?
  • Gibt es einen Anhaltspunkt, wie ein Formular maximal aufgebaut werden darf, damit solche Speicherprobleme nicht auftreten?

Gruß

Thomas

Hallo Thomas,

ich habe mit VB6 ein Programm geschrieben, das ansonsten auch
ganz manierlich läuft, oder besser gesagt gelaufen ist.
Nachdem ich nun auf ein paar Formularen noch ein paar
Textfelder nachgetragen habe, weil ich noch ein paar
zusätzliche Felder benötigt habe, erhalte ich beim Programm
andauernd die Meldung, daß nicht genügend Speicher vorhanden
sei und das Programm wird beendet. Das gleiche passiert mir
übrigens leider ebenfalls mit der fertig compilierten
exe-Datei.

Die Fehlermeldung kann u.U. auch in die Irre führen.
Nicht alle Fehlermeldungen geben immer die richtige Ursache an.
Verwendest Du eventuell eine Datenbank mit sehr vielen Einträgen?

  • Kann mir jemand sagen, wie man dieses Problem evtl. lösen
    kann.
  • Gibt es irgendwo eine Einstellung, mit der man den für das
    Programm zur verfügung stehenden Speicher erweitern kann?

Weiß ich nicht.

  • Gibt es einen Anhaltspunkt, wie ein Formular maximal
    aufgebaut werden darf, damit solche Speicherprobleme nicht
    auftreten?

Wie viele Steuerelemente hast Du denn auf einer Form? Ich glaube, die maximale Anzahl ist mit etwa 200 begrenzt.
Verwendest Du Steuerelementefelder?

Wenn Du keine Datenbak verwendest und deutlich unter 200 Steuerelmente / Form verwendest, würde ich den Fehler an anderer Stelle suchen. Wenn Du Arrays zu groß dimensionierst oder Dir eine Schleife außer Kontrolle gerät, ist auch schnell der Speicher voll.
Statt sehr großer, mehrdimensionaler Arrays verwende besser eine Datenbank. Das schont den Speicher und ist auch nicht viel langsamer.

Gruß, Rainer

Hallo Rainer

Die Fehlermeldung kann u.U. auch in die Irre führen.
Nicht alle Fehlermeldungen geben immer die richtige Ursache
an.
Verwendest Du eventuell eine Datenbank mit sehr vielen
Einträgen?

Eigentlich nicht. Da steckt zwar eine dahinter, aber die ist nicht wirklich groß.

  • Gibt es einen Anhaltspunkt, wie ein Formular maximal
    aufgebaut werden darf, damit solche Speicherprobleme nicht
    auftreten?

Wie viele Steuerelemente hast Du denn auf einer Form? Ich
glaube, die maximale Anzahl ist mit etwa 200 begrenzt.
Verwendest Du Steuerelementefelder?

Es sind zwar nicht gerade wenige Felder, aber 200 dürften es eigentlich nicht sein. Aber knapp 100 könnten es schon sein. Die sind auch zu Feldern gruppiert.

Wenn Du keine Datenbak verwendest und deutlich unter 200
Steuerelmente / Form verwendest, würde ich den Fehler an
anderer Stelle suchen. Wenn Du Arrays zu groß dimensionierst
oder Dir eine Schleife außer Kontrolle gerät, ist auch schnell
der Speicher voll.
Statt sehr großer, mehrdimensionaler Arrays verwende besser
eine Datenbank. Das schont den Speicher und ist auch nicht
viel langsamer.

Gruß, Rainer

Gruß Thomas

hallo Thomas,

Es sind zwar nicht gerade wenige Felder, aber 200 dürften es
eigentlich nicht sein. Aber knapp 100 könnten es schon sein.
Die sind auch zu Feldern gruppiert.

bleibt noch die Frage nach mehrdimensionalen Arrays offen. :wink:

Zu den Steuerelementen. Sind die immer alle sichtbar? Oder immer nur bestimmte, andere dafür nicht? Bei der Menge wäre das kein Wunder.
Dann würde sich eine weitere Form anbieten. …

Oder verwendest Du Textfelder/Labels um eine Tabelle anzuzeigen? Dann wäre das Flexgrid/DBGrid ein Ausweg. …

Sorry, wenn das nicht hilft, ich kenne Dein Programm nicht.

Gruß, Rainer

klingt zwar doof
Hallo
klingt zwar doof, kann die Meldung auch auftreten, wenn die Festplatte voll ist???

Mfg Werner

Hallo Werner,

klingt zwar doof, kann die Meldung auch auftreten, wenn die
Festplatte voll ist???

nö, klingt nicht doof, ja kann auch. Je nach Belastung kann Win auch auf Virtual Memory zurückgreifen wollen, was bei voller Platte nicht klappt. Dann kommt die selbe Meldung.

Gruß, Rainer

Hallo Thomas,

hmm scheene **** kann man da nur sagen :frowning:
Hast du mal versucht das programm wieder in sein Ursprung zu versetzen?
Alle neuen deklarationen weg, alle neuen Steuerelemente weg?
Wenn ja, laeuft es dann ? ja–> ok dann liegt es an den neuen kram und so baue langsam und probiere es schrittweise aus, dann siehst du woran es liegt. Laeuft es net. liegt es nicht daran.
Ich denke mal das dann dein VB oder dein OS einen treffer weg hat. In dem Falle wuerde ich mal ein neues projekt machen und irgendein sinnlosen code schnell tipseln und schauen obs laeuft. wenn nicht dann würde ich VB neu installieren ( also deinstallieren und dann neuinstallation)
Wenn ja … dann würde ich das alte projekt laden.
Lädt es noch? Starte es im debugmodus und lasse es step by step laufen, überwache mal die variable err! zur not setze in jede prozedure die zeile on error resume next ein.

Du sagst das der fehler auch bei der fertig compilierten exe auftritt, hmm welche version ist denn das? Bei der wo die aenderungen schon drinne sind oder der alten?
Hast du genug temp. speicherplatz?
Hast du vielleicht einen ungewollten rekursiven Aufruf in deinem Programm?

Es gibt viele möglichkeiten was das sein kann.

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]