Page 1 of 1

Display filesizes >2GB

Posted: Mon Jun 06, 2005 6:54 pm
by Justin
Code updated For 5.20+

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