*.CSV maximale Grösse ?
Verfasst: Mi, 01. Dez 2021 13:35
Frage : wie gross darf eine *.CSV Datei maximal sein
4 GB oder > 4 GB unter 32 Bit Apps / OS
4 GB oder > 4 GB unter 32 Bit Apps / OS
Das deutschsprachige Forum für Entwickler in der Xbase-Welt, ein Angebot des Deutschsprachige Xbase-Entwickler e. V.
https://www.xbaseforum.de/
Code: Alles auswählen
nHandle := FOpen(cFile, FO_READWRITE+FO_DENYWRITE)
IF FError() <> 0
? "Fehler beim öffnen der Datei:", FError()
ELSE
? nPos := FSeek( nHandle, 0 , FS_END )
Code: Alles auswählen
#xcommand MEMBER DWORDLONG <cm> => MEMBER DWORD64 <cm>
#xcommand PROPERTY DOUBLE <nd> IS UINT64 MEMBER <uq> =>;
INLINE ACCESS ASSIGN METHOD <nd>(v) ;
; if( PCount() > 0 ) ;
; ::<uq> := Double2ULongLong( v ) ;
; return v ;
; end ;
;return ULongLong2Double( ::<uq>)
Code: Alles auswählen
int fseek(
FILE *stream,
long offset,
int origin
);
int _fseeki64(
FILE *stream,
__int64 offset,
int origin
);
Code: Alles auswählen
**** da gibt es einige OT4XB Funktionen ...
#include "ot4xb.ch"
FUNCTION fsizeX1(nHandle) // Abfrage aller Dateien Grössen möglich.
local nRet, oNetR
oNetR := _Large_Integer():new()
oNetR:_alloc_()
nRet := @Kernel32:GetFileSizeEx( nHandle, @oNetR )
if nRet = 0
// Fehlerbehandlung: Fehler an dieser Stelle nicht zulässig --> Log und Programmende
** logEXEerror( "GetFileSizeEx")
quit
endif
make_QWord(oNetR:nLowPart,oNetR:nHighPart,@nRet)
nRet := int(nRet,0)
oNetR:_free_(.F.)
return(nRet)
FUNCTION fsizeX2(nHandle) // Abfrage aller Dateien Grössen möglich.
local nRet, oNetR
oNetR := _Large_Integer():new()
oNetR:_alloc_()
nRet := @Kernel32:GetFileSizeEx( nHandle, @oNetR )
if nRet = 0
// Fehlerbehandlung: Fehler an dieser Stelle nicht zulässig --> Log und Programmende
** logEXEerror( "GetFileSizeEx")
quit
endif
make_QWord(oNetR:nLowPart,oNetR:nHighPart,@nRet)
nRet := round(nRet,0)
oNetR:_free_(.F.)
return(nRet)
FUNCTION fsizeX3(nHandle) // Abfrage aller Dateien Grössen möglich.
local nRet, oNetR
oNetR := _Large_Integer():new()
oNetR:_alloc_()
nRet := @Kernel32:GetFileSizeEx( nHandle, @oNetR )
if nRet = 0
// Fehlerbehandlung: Fehler an dieser Stelle nicht zulässig --> Log und Programmende
** logEXEerror( "GetFileSizeEx")
quit
endif
make_QWord(oNetR:nLowPart,oNetR:nHighPart,@nRet)
* nRet := round(nRet,0)
oNetR:_free_(.F.)
return(nRet)
BEGIN STRUCTURE _Large_Integer
MEMBER DWORD nLowPart
MEMBER DWORD nHighPart
END STRUCTURE
Code: Alles auswählen
Test der low level file Funktionen 13:20:53
Xbase++ Version: Xbase++ (R) Version 1.90.355
verybig.txt
Größe laut Explorer: 4.154.687.701 (numerisch)
Größe laut Explorer: 4.154.687.701 (string)
Größe laut FSize(c): 4.154.687.701 (Dateiname)
Größe laut FSEEK(): -140.279.595 (numerisch)
Größe laut FSize(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX1(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX2(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX3(h): 4.154.687.701 (mit filehandle) 4154687701,00
Größe laut FSize(n): 4.154.687.701 (über Variable)
Wieder am Anfang: 0
am Ende nochmal 1. Filehandle abfragen:
Größe laut FSize(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX1(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX2(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX3(h): 4.154.687.701 (mit filehandle) 4154687701,00
Gelesen: 4.154.687.701
Kopiert: 4.154.687.701
13:21:58 Dauer: 1,07
Code: Alles auswählen
Test der low level file Funktionen 13:35:58
Xbase++ Version: Xbase++ (R) Version 2.00.1520
verybig.txt
Größe laut Explorer: 4.154.687.701 (numerisch)
Größe laut Explorer: 4.154.687.701 (string)
Größe laut FSize(c): 4.154.687.701 (Dateiname)
Größe laut FSEEK(): 4.154.687.701 (numerisch)
Größe laut FSize(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX1(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX2(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX3(h): 4.154.687.701 (mit filehandle) 4154687701,00
Größe laut FSize(n): 4.154.687.701 (über Variable)
Wieder am Anfang: 0
am Ende nochmal 1. Filehandle abfragen:
Größe laut FSize(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX1(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX2(h): 4.154.687.701 (mit filehandle) 4154687701
Größe laut FSizeX3(h): 4.154.687.701 (mit filehandle) 4154687701,00
Gelesen: 4.154.687.701
Kopiert: 4.154.687.701
13:36:45 Dauer: 0,77
Ich bin mir nicht mehr sicher, was die Grenzen unter Win NT ff. 32 Bit waren,
Code: Alles auswählen
BEGIN STRUCTURE _Large_Integer
MEMBER DWORD nLowPart
MEMBER DWORD nHighPart
END STRUCTURE