c++ Frage zur maximalen Dateigröße bei Streams

angeberman

Grünschnabel
Hallo.

Ich hab eine sehr große Datei (>37 GB!) , bestehend aus Binärdaten die ich stückchenweise einlesen muss (so eine Art Videostream)

ich greife Blockweise darauf zu.. Mit fseek(file,blocksize, SEEK_CUR) springe ich an die gewünsche Position. Brauche immer nur einen kleinen Ausschnitt.

Klappt auch alles wunderbar.... am Anfang. Kaum überschreitet meine Pointerpostion den doppelten long - Wert ( ~ 4,294,967,294) Liefert mir fseek eine Fehlermeldung.

Kann ich den Wertebereich der PointerVariablen erhöhen? Mir schwebt da sowas wie unsigned__int64 vor.
Gibt es irgendwelche schlauen Ansätze wie ich mit solch großen Dateien umgehen kann?
Wäre für Tips und Ratschläge sehr dankbar. Mit kleinen Datein funktioniert mein Programm ja auch wunderbar.

Danke und Grüße

Tillmann
 
du brauchst spezielle Bibliotheksfunktionen die mit so großen Dateien umgehen können. Diese haben dann auch einen unsigned 64bit integer Wert als Zeiger.

Für welches OS soll es denn sein?
 
OS...

Entwickeln tu ich's auf nem W2k sollte aber auch auf nem XP laufen. Ich arbeite mit Borland C++ Builder 6.

Könnte es am Compiler liegen ?
Gibt es noch andere Möglichkeiten auf einen "Stream" zuzugreifen.

Danke

Tillmann
 
fseek vs. fileseek

meint ihr, es würde eine verbesserung geben wennich statt fseek und fopen (usw.) fileseek und fileopen (usw) verwende...

Können die mit größeren Pointern umgehen?

Hat jemand Erfahrung damit? Wo liegen die Unterschiede?

Grüße
Tillmann
 
such mal nach den funktionen:

If you don't use mmap for the 4GB data files, you will need to use lseek() or
ftello()/fseeko() to handle seeking to the large file offsets. ...
 
Zurück