Seite 1 von 1

FSEEK() > 4GB ? / SDFDBE

Verfasst: So, 26. Feb 2017 23:27
von AUGE_OHR
es gab ja die PDR 6383 zur Behebung der 2 GB Grenze mit dem FSEEK() bis 4 GB gehen "müsste".
die Frage ist ob FSEEK() auch > 4 GB kann ?
---
SDFDBE (DATA-Komponente) wird angegeben :
Dateigröße Limitiert auf Systemresourcen
ist damit jetzt Xbase++ 32bit gemeint ? -> 4 GB ?

Re: FSEEK() > 4GB ? / SDFDBE

Verfasst: Mo, 27. Feb 2017 8:21
von brandelh
:arrow: http://www.xbaseforum.de/viewtopic.php? ... eek#p91022

da hatten wir das schon mal diskutiert.

Wenn man die PDR Beschreibung liest, soll es wohl auch einen 1.90.xx "HotFix" geben, den habe ich nicht.
Nach meinen Tests, kann man mit 1.90.355 (wohl schon früher) mit fread() und fwrite() auch Dateien über 4 GB schreiben und lesen, aber alle FSEEK() Zugriffe über 2 GB sind nicht möglich (Wert wird negativ).

Mit der 2.00.547 (laut PDR schon 2.00.430) wurde dieses Problem dann behoben, hier arbeitet FSEEK() fehlerfrei, egal mit welcher Dateigröße ich schon probiert habe.

In allen Versionen muss man aber berücksichtigen, dass FSEEK() auch über das Dateiende hinaus liest, erst mit fread() wird EOF erkannt.

Die Begrenzung der Systemresourcen bezüglich maximaler Dateigröße hängt vom Dateisystem ab: NTFS (ich meine 16 TB), Fat32, FAT (2 GB) etc. und natürlich vom Datenträger, ein 2 GB Stick kann keine 4 GB Datei halten :wink: