Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Fehlermeldung "String space corrupt in line0 of modul..

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
steini



Anmeldungsdatum: 17.09.2004
Beiträge: 58

BeitragVerfasst am: 07.10.2004, 10:30    Titel: Fehlermeldung "String space corrupt in line0 of modul.. Antworten mit Zitat

Hallo,

weiß jemand was die Ursache dafür ist, wenn die EXE meines qb71-programms immer an der gleichen Stelle die Fehlermeldung "String space corrupt" ausgibt und das Programm beendet wird? Und wie kann ich das verhindern?

Danke fürs Interesse
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5895
Wohnort: Deutschland

BeitragVerfasst am: 07.10.2004, 14:02    Titel: String Space Antworten mit Zitat

Hallo.

Ich vermute mal folgende Ursachen:

Es ist zu wenig Speicher eingestellt. Unter Eigenschaften -> Speicher alles auf automatisch einstellen oder den höchsten möglichen Wert nehmen.

Startest du QB mit /Ah? Wenn ja, lass es mal weg; wenn nein, probiers mal. zwinkern

Ungenaue Diagnose: Ich schätze die Meldung wird angezeigt, weil zu wenig (funktionierender) Speicher zur Verfügung steht.

Woran das liegen könnte siehe oben.

Du könntest aber auch mal probieren, QB 4.5 zu nehmen.

Hast du große Arrays in deinem Programm und kannst du mal die Codestelle posten, bei der es zu dem Fehler kommt?

Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 08.10.2004, 12:50    Titel: Zu viel rumgefritzelt Antworten mit Zitat

Also diese Fehlermeldung heißt im deutschen QB ja "Zeichenkettenbereich beschädigt"..
Aber ich würde nicht sagen, dass es ein Problem des zur Verfügung stehenden Speichers ist, sondern dass du vielleicht irgendwo mit irgendwelchen Befehlen (POKE oder so) in den Speicher "reinkritzelst" - und das passt QB nicht. Fallst du mit POKE arbeitest, würde ich erstmal einen Dummystring mit irgendwelchen Zeichen füllen und dann das Segment setzen;
Code:
dummy$ = STRING$(10000,0)
DEF SEG = VARSEG(dummy$)
addr = VARPTR(dummy$) ' oder versuche auch mal addr = SADD(dummy$)
pos = 0 '1. Zeichen im String
POKE (addr+pos), CHR$(XY)
DEF SEG

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
steini



Anmeldungsdatum: 17.09.2004
Beiträge: 58

BeitragVerfasst am: 08.10.2004, 17:38    Titel: Antworten mit Zitat

Also die Fehler 14 (Out of string space) oder 7 (out of memory) im kompilierten Quellcode treten immer bei VB-Script-Aufrufen mit SHELL auf.
Allerdings nur unter Windows 98, unter XP läuft mein Programm.
Muss also irgendwie mit dem Speicher zu tun haben, der für Dos-Anwendungen bereit gestellt wird. Aber weshalb dieser bei 98 anscheinend kleiner? Und welcher Speicher ist da überhaupt, der diese Fehlermeldungen verursacht und wo kann ich sehen, wieviel mir davon zur Verfügung steht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 08.10.2004, 17:55    Titel: WinXP ist flexibler Antworten mit Zitat

Achso, du rufst weitere Programme auf... dann ist die Sache klar; meines Wissens nach hat XP ein besseres Speichermanagment als Win98, denn ein fettes Windows-Programm aufzurufen ist manchmal ein bisschen zu viel für QB... "out of memory" ...ich weiß ja nicht wieviel RAM du in deiner Kiste hast, aber wenn du einen überblick über den für QB vorgesehenen Speicher haben willst, dann geh auf deine QB.EXE, mit der rechten Maustaste auf "Eigenschaften" und dann gehste auf die Registerkarte "Speicher". Dort kannst du ja mal checken, ob alle Speichereinstellungen stimmen.
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
steini



Anmeldungsdatum: 17.09.2004
Beiträge: 58

BeitragVerfasst am: 09.10.2004, 10:06    Titel: Antworten mit Zitat

Hallo und danke zunächst mal für eure Ratschläge!

Ich habe die Ursache des Problems jetzt gefunden, allerdings hab ich noch keine Ahnung wie ich das Problem umgehen kann.

Windows 98 stellt nur 577 KB konventionellen DOS-Speicher zur Verfügung, Windows XP dagegen 613 KB! Und genau diese fehlenden 36 KB lassen meine EXE unter 98 "out of memory" oder "out of string space" laufen und zwar immer genau dann, wenn sie ein VB-Script aufruft, da das ebenfalls zusätzlichen konventionellen Speicher belegt.

Meine Frage:
Wie kann ich erreichen, dass mein Programm weniger konventionellen Speicher (also mindesten 36 Kb weniger) benötigt, damit auch die Script-Aufrufe unter Windows 98 noch klappen?

Das Programm besteht aus 5 Modulen mit je einigen Subs. Verkleinern ist nicht mehr möglich.
Hatte mir überlegt, anstelle die VB-Scripts mit SHELL aufzurufen, könnte man mit RUN arbeiten, damit das Prog vorher komplett aus dem Speicher entfernt wird. Allerdings müsste im Anschluss das Programm an der Ausstiegsstelle weiterlaufen und sämtliche Programmvariablen (und das sind viele) wären dann ja auch gelöscht traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5895
Wohnort: Deutschland

BeitragVerfasst am: 09.10.2004, 11:03    Titel: Lösungen Antworten mit Zitat

Hallo.

Du könntest vor dem Scriptaufruf sämtliche weiter benötigten Variablen in eine Datei schreiben, dann alles löschen (auf welchem Weg auch immer) und dann das VB-Script aufrufen. Anschließend könntest du die Variablen wieder einlesen.
Weiterhin könntest du Variablen o.ä. grundsätzlich in Dateien auslagern. Wenn du lange Strings hast oder so kannst du die ja versuchen in Dateien zu speichern.

Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 09.10.2004, 13:04    Titel: Zerhechseln Antworten mit Zitat

Wie meinst du das mit "5 module" ? Also wenn du dein Programm in Includes oder Libs zerschnippelt hast, bringt dir das auch keinen zusätzlichen Speicher, eher noch weniger. Mit RUN kannst du keine EXE-Dateien aufrufen, das geht nur mit BAS-Dateien. Und Variablen löschen bringt auch nicht viel, weil die Variablen innerhalb des Für QB-Reservierten speichers sind, und da kann/darf eh kein anderes Programm hinschreiben. Ich schlage vor du machst aus deinem Programm mehrere BAS-Dateien und Kompilierst sie. Dann kannst du bestimmte Sachen einfach mit SHELL aufrufen. Bestimmte Variablen könntest du mit COMMAND$ übergeben oder in eine gemeinsame Datei schreiben.
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz