Display filesizes >2GB
Posted: Mon Jun 06, 2005 6:54 pm
Code updated For 5.20+
Just a workaround to display filesizes >2gb as strings due to the lack of doubles
Just a workaround to display filesizes >2gb as strings due to the lack of doubles
Code: Select all
#INVALID_FILE_SIZE = $FFFFFFFF
Structure DOUBLE_
l1.l
l2.l
EndStructure
Procedure GetFileSize64(file$, *fs.DOUBLE_)
hfile.l = CreateFile_(file$, #GENERIC_READ, 0, #Null, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, #Null)
If hfile<>#INVALID_HANDLE_VALUE
*fs\l1 = GetFileSize_(hfile, @*fs\l2)
CloseHandle_(hfile)
ProcedureReturn *fs\l1
Else
ProcedureReturn #INVALID_FILE_SIZE
EndIf
EndProcedure
Procedure.s GetFileSize64Str(file$)
If GetFileSize64(file$, @fs.DOUBLE_)<>#INVALID_FILE_SIZE
sz$ = Space(100)
If StrFormatByteSize64_(fs\l1, fs\l2, @sz$, 100)
ProcedureReturn sz$
Else
ProcedureReturn ""
EndIf
Else
ProcedureReturn ""
EndIf
EndProcedure
file$ = OpenFileRequester("", "", "", 0)
If file$
Debug GetFileSize64Str(file$)
EndIf