Dateien/string größer als 2GB

Hallo,

Ich will eine datei öffnen, die größer als 2GB, 6GB, groß ist. Die größe einer String Variable beträgt aber nur max. 2GB und bei einer Long Vaiable ist der größte Wert auch 2147483648…
Wie kann ich nun eine solche große Datei mit vb öffnen unt Verarbeiten?

mfg
esel

FileStream
Hallo Frank,

guck Dir mal das FileStream-Objekt in der Hilfe an.

Gruß
Thorsten

Hallo,

Ich will eine datei öffnen, die größer als 2GB, 6GB, groß ist.
Die größe einer String Variable beträgt aber nur max. 2GB und
bei einer Long Vaiable ist der größte Wert auch 2147483648…
Wie kann ich nun eine solche große Datei mit vb öffnen unt
Verarbeiten?

was willst Du denn arbeiten. 6GB in meinen 256MB großen Arbeitsspeicher zu laden hätte ich ohnehin Probleme. Da gibt es dann nur einen Weg, immer nur einen Teil der Datei zu laden und zu verarbeiten. Dafür gibt es dann aber wieder mehrere Möglichkeiten. Welche die Beste ist, hängt davon ab, was genau Du vor hast.

Gruß, Rainer

Hallo Frank

Ob du die Datei bearbeiten kannst ist auch abhängig vom Betriebssystem/Dateisystem.

Wenn du die datei öffnen kannst solltest du sie auf jedenfall splitten bei der verarbeitung.

Gruß

das sollte etwa so gehen, kanns gerade nicht ausprobieren,
hab vb nicht installiert hier. die 1000 sind die Anzahl Zeichen,
die er bei jedem Mal liest. Kann sein, dass die EOF Abfrage
nicht richtig funktioniert, dann eben mit on error goto den
Fehler abfangen.

Alex

Dim temp As String
Dim Dateiname as string
dim dateinummer as integer

Dateiname =„c:\probe.txt“
Dateinummer = 1

Open dateiname For Input As dateinummer
While Not EOF(dateinummer)
temp = Input(1000, dateinummer)
debug.print temp
Wend
Close dateinummer

Hallo, darf man „esel“ sagen?
Ich würde es so machen:
Du brauchst zuerst mal ein größeres Zahlenformat als 32Bit Integer um die Adressierung im file vornehmen zu können.
Inmitten der Datei etwas einfügen geht nur mit Neuerstellung der Datei, oder einer Neuschreibung mit Beginn der Änderung.
Auf eine Datei derartigen Umfangs kannst Du nicht unter jedem Windows zugreifen, wie schon beschrieben. Beim NTFS müßte es aber gehen.
Dazu würde ich in die API-Dokumentation schauen.
Du mußt dann eventuelle high- und low Doppelworte selbst berechnen, weil wie Du ja schon selbst erkannt hast, keine Integer- Zahlen über 2 GByte zur Verfügung stehen.
Du kannst auch nur einen kleinen Teil der Datei in den Ram-Speicher laden, ist dann systemabhängig, oder ich würde gleich kleinere Portionen nehmen, so das es auf jeden Fall geht.
MfG
Matthias

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