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:

zu wenig Speicherketten Speicher Platz; was tun

 
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
hge2001



Anmeldungsdatum: 26.02.2008
Beiträge: 18

BeitragVerfasst am: 26.02.2008, 12:00    Titel: zu wenig Speicherketten Speicher Platz; was tun Antworten mit Zitat

Hallo,

Ich möchte in ein textarray (dim H$(300)) textvariablen ein, die sehr lang werden können. Irgendwann erscheint Fehlerrmeldung (zu wenig Speicherketten Speicher Platz Fehler);

Ich vermute, dass QBASIC die 2 GB Ram meines Rechners nicht ausnutzen kann.

Meine Frage, gibt es irgendeinen eleganten trick, diese Hürde zu umgehen so dass ich mehr Variablen einlesen kann?

Vielen Dank für die Hilfe

Gruss

HGE
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 26.02.2008, 13:04    Titel: Antworten mit Zitat

gut vermutet, bei 640kb ramverbrauch riegelt QB ab lächeln ein gewisser bill gates war mal der meinung, ein computer würde niemals mehr brauchen und hier siehst du das ergebnis. QBasic ist veraltet, entweder du fängst kompliziert mit externen bibliotheken für den erweiterten speicher an oder steigst auf FreeBASIC oder was ganz anderes um.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 26.02.2008, 14:05    Titel: Antworten mit Zitat

Hallo

Vielleicht wäre die eleganteste Lösung, einfach nicht so viele Variable gleichzeitig in den Arbeitsspeicher zu laden, sondern immer nur die, die man gerade braucht bzw. bearbeitet. Oder du musst den Speicherplatz besser einteilen. Sicher ist es für die Bearbeitung eines Textarrays aber nicht nötig, deine 2 GB RAM auszunutzen. 2 GB entsprechen immerhin knapp einer Million gedruckten Buchseiten. Das sind so viele Bücher, wie in einer kleinen Bibliothek herumstehen! Um das beurteilen zu können, müsstest du uns aber schon etwas mehr von deinem Problem bzw. deinem bisherigen Ansatz offenbaren.

Gruß & Willkommen im Forum
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hge2001



Anmeldungsdatum: 26.02.2008
Beiträge: 18

BeitragVerfasst am: 26.02.2008, 14:51    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
gut vermutet, bei 640kb ramverbrauch riegelt QB ab lächeln ein gewisser bill gates war mal der meinung, ein computer würde niemals mehr brauchen und hier siehst du das ergebnis. QBasic ist veraltet, entweder du fängst kompliziert mit externen bibliotheken für den erweiterten speicher an oder steigst auf FreeBASIC oder was ganz anderes um.


Danke für die Info.

Frage zu FreeBasic: Ist denn die syntax zu qbasic einigermassen identisch? wenn ja könnte ich diesen Weg gehen.

@skilltronic

danke für deine Antwort. Ist eine einfache KontoAnwendung und ich möchte diese ich so einfach wie möglich halten. Ich kann mir durchaus helfen, die Daten zu splitten sodass das programm funktioniert. Es wäre nur schön gewesen, wenn ich durch einen einfachen Trick dies umgehen könnte.

Gruss

hge
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 26.02.2008, 15:16    Titel: Antworten mit Zitat

freebasic baut auf QB-syntax auf, ja. Es gibt diverse änderungen aber die grundstuktur ist die selbe mit halt ein paar modernisierungen.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 26.02.2008, 15:18    Titel: Antworten mit Zitat

@MisterD:
Naja, Gates hat da meiner Ansicht nach weniger damit zutun gehabt - auch wenn ihm diese Aussage untergeschoben wird. War er bei IBM bzw. Intel oder bei MS? zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 26.02.2008, 17:46    Titel: Antworten mit Zitat

Ich würde das Projekt sonst auf FreeBasic umportieren, wo Du echte 32-Bit-Binaries erzeugen kannst.

Alternativ kann sich je nach Algorithmus eine temporäre Direktzugriffsdatei im %TEMP% eignen, d.h. Du verwaltests dort drüber Dein Array. Etwas passender Modellcode dazu (nicht von A-Z zu Ende designt!) zur Anregung:
Code:
DIM BigString&(300), BigStrLen%(300)
' Diese Arrays sind nur Pointer und Länge und belegen
' somit nur 1800 Bytes vom wertvollen konventionellen DOS-Speicher

OPEN ENVIRON$("TEMP") + "\~STRINGS.TMP" FOR BINARY AS 1
NaechstFrei& = 1&

' String ablegen, d.h. Operation BigString(index%)=s$
BigString&(index%) = NaechstFrei&
SEEK 1, NaechstFrei&
PRINT#1, s$;
BigStrLen%(index%) = LEN(s$)
NaechstFrei& = NaechstFrei& + LEN(s$)

d.h. BigString&() ist wie eine "Speicheradresse" auf den in der temporären Datei. Die Kunst hier ist freilich noch die Programmierung einer geeigneten Garbage Collection, d.h. wenn Du einem bestehenden Index etwas Neues zuweist, dass nicht Lücken in der .TMP-Datei entstehen und so womöglich die Disk voll wird bzw. wahrscheinlicher das 2 GB-Dateigrössenlimit vorzeitig erreicht werden.

Um die Festplatte zu schonen, macht es übrigens Sinn, eine ausreichend grosse RAM-Disk mit RAMDRIVE.SYS anzulegen und dort diese Datei unterbringen, falls sehr intensiv darauf zugegriffen werden muss.

Weiterer Lösungsansatz: Erkläre uns Dein genaues Vorhaben/Problem, wozu Du das grosse Stringfeld benötigst - vielleicht lässt sich mit einem eleganteren Algorithmus das Speicherproblem bereits so erschlagen! Letzteres war in den 80er-Jahren der einzige Ansatz, mit dem sich ein komplexeres Problem auf damaligen 8-Bit-Rechnern überhaupt lösen liess.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 26.02.2008, 20:28    Titel: Antworten mit Zitat

Kannst vielleicht auch versuchen die Daten auf ne Bildschirmseite unterzubringen. Würde das vielleicht gehen????
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hge2001



Anmeldungsdatum: 26.02.2008
Beiträge: 18

BeitragVerfasst am: 27.02.2008, 15:53    Titel: Antworten mit Zitat

@dreael

Danke für diese wertvollen Tipp; ich hab das Prinzip verstanden und hört sich gut an.
Werde mir aber zunächst auch mal freebasic ansehen.

@heinzi

nein, das mit dem Bildschrim reicht wohl nicht.

Vielen Dank für die Klasse Antworten

hge
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 28.02.2008, 14:32    Titel: Antworten mit Zitat

Heizi hat Folgendes geschrieben:
Kannst vielleicht auch versuchen die Daten auf ne Bildschirmseite unterzubringen. Würde das vielleicht gehen????


hge2001 hat Folgendes geschrieben:
nein, das mit dem Bildschrim reicht wohl nicht.


Der Text muss dabei ja nicht als Text dargestellt werden. Wenn man jedes Zeichen als Farbwert (0-255) eines Pixels in SCREEN 13 darstellt, bringt man immerhin 64000 Byte auf einer Bildschirmseite unter.

Gruß
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hge2001



Anmeldungsdatum: 26.02.2008
Beiträge: 18

BeitragVerfasst am: 15.05.2009, 15:26    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
gut vermutet, bei 640kb ramverbrauch riegelt QB ab lächeln ein gewisser bill gates war mal der meinung, ein computer würde niemals mehr brauchen und hier siehst du das ergebnis. QBasic ist veraltet, entweder du fängst kompliziert mit externen bibliotheken für den erweiterten speicher an oder steigst auf FreeBASIC oder was ganz anderes um.


Hallo,

Nach langer Zeit kontne ich mich jetzt erst diesem Thema wieder widmen.

Ich habe das Programm auf FreeBasic umgestellt. War garnicht sooo aufwändig und jetzt habe ich auch kein speicherplatzproblem mehr.

Eine Frage:

Ich möchte die screen-ausgabe etwas verschönern; (beispiel Helligkeit der schrift) . wo kann ich etwas über die Kontrollzeichen finden ? geht sowas in FB?

HG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 15.05.2009, 16:03    Titel: Antworten mit Zitat

Hallo,

die Schriftfarbe kannst du mit dem COLOR-Befehl verändern.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
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