Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hge2001
Anmeldungsdatum: 26.02.2008 Beiträge: 18
|
Verfasst am: 26.02.2008, 12:00 Titel: zu wenig Speicherketten Speicher Platz; was tun |
|
|
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 26.02.2008, 13:04 Titel: |
|
|
gut vermutet, bei 640kb ramverbrauch riegelt QB ab 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 |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 26.02.2008, 14:05 Titel: |
|
|
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 |
|
 |
hge2001
Anmeldungsdatum: 26.02.2008 Beiträge: 18
|
Verfasst am: 26.02.2008, 14:51 Titel: |
|
|
MisterD hat Folgendes geschrieben: | gut vermutet, bei 640kb ramverbrauch riegelt QB ab 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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 26.02.2008, 15:16 Titel: |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 26.02.2008, 15:18 Titel: |
|
|
@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?  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 26.02.2008, 17:46 Titel: |
|
|
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 |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 26.02.2008, 20:28 Titel: |
|
|
Kannst vielleicht auch versuchen die Daten auf ne Bildschirmseite unterzubringen. Würde das vielleicht gehen???? |
|
Nach oben |
|
 |
hge2001
Anmeldungsdatum: 26.02.2008 Beiträge: 18
|
Verfasst am: 27.02.2008, 15:53 Titel: |
|
|
@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 |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 28.02.2008, 14:32 Titel: |
|
|
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 |
|
 |
hge2001
Anmeldungsdatum: 26.02.2008 Beiträge: 18
|
Verfasst am: 15.05.2009, 15:26 Titel: |
|
|
MisterD hat Folgendes geschrieben: | gut vermutet, bei 640kb ramverbrauch riegelt QB ab 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 |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
|