Vba, Fehler: Nicht genügend Speicher

Hallo Wissende,

Hallo Reinhard

beim Versuch eine Frage aus dem Textbrett:
/t/nicht-textverarbeitung-aber-massentext/5682525
zu lösen kommt bei folgendem Word2000-Vba-Code Fehler 7, nicht
genügend Speicher in der Put-zeile.

Welches OS liegt denn vor? Wie viel Arbeitsspeicher steht denn zur Verfügung und ist frei?

Sub Gross()
Dim Satz As String
Satz = String(261292013, „A“)
'MsgBox Len(Satz)
Close
Open „c:\test\gross.txt“ For Binary As #1
Put #1, , Satz
Close
End Sub

Jetzt habe ich schon eine zeitlang zugebracht um die
Limitation der String-Funktion, also diese 261292013
herauszufinden.

Jedes Zeichen belegt 2 Byte! Das wiederrum bedeutet bei einer Länge von 2GB = 4GB Speicherplatz!

Jetzt kann ich zwar die Länge von „Satz“ verringern bis kein
Fehler mehr kommt, das nützt mir aber nix, da ja der Anfrager
als Ergebnis eine bis zu 2 GB große Textdatei möchte.

Ja aber was spricht dagegen es in kleine haeppchen zu schnippeln und diese dann zu schreiben?

Am besten noch mit Zufallszeichen drin.

Sollte kein Problem sein :smile:

Habt ihr Ideen wie man das angehen könnte?

In einer Routine erstmal den Höchstmöglichsten Wert ermitteln, und dann in einer Schleife einfach den String mit Zufallswerten befuellen und dann ins File schreiben.

Ich kann zwar die neue Datei mit „For Input“ öffnen und dann
rel. kleine Sätze nacheinander reinschreiben mit „Print“, aber
bei 2 GB glaube ich daß dies lange dauert.

Denke ich nicht! Das waeren rein aus dem Bauch herraus und je nach Rechner und OS system vlt. 2 bis 3 Durchlaeufe, was sich ergo unter 2 Sekunden realisieren laesst.

Aus dem zeitgrund habe ich dem Anfrager abgeraten von
Zufallszeichen, das dauert ja noch viel länger als nur ein
Zeichen.

Richtig. Stellt sich hier aber die Frage. Was will er mit dem File ? Muessen es bindend zufallszeichen sein ? Würde auch der Datentyp Byte gehen ?

Kompromiß wäre, „zufällig“ eine x Bytes lange Zeichenfolge zu
erzeugen und die dann zigmal nacheinander in die datei
schreiben.

Richtig, oder halt die Daten als Bytes schreiben. Sprich 0 oder 1 :wink: Das würde m.E schneller gehen!

M.E. nach ist es egal ob VB-Code oder Vba-Code, kann sich
höchstens Versionsabhängig bei evtl. Limintationen
unterscheiden.
Also daß man mit VB5.0 per Print nur 2 MB große Sätze
schreiben kann und mit VB6.0 32 MB große Sätze oder sowas.

Danke und Gruß
Reinhard

Ich probiere mal fix was :wink: und meld mich dann wieder.
By the Way … Schau mal hier

http://www.meinews.net/kann-t438680.html

MfG Alex