Procedure.s StrDouble(lowLONG.l, hiLONG.l)
  Protected buffer1.s, buffer2.s, buffer3.s, pos1.l, pos2.l, pos3.l, calc1.l, calc2.l
  buffer3 = StrU(lowLONG,#LONG)
  For pos1 = Len(StrU(hiLONG,#LONG)) To 1 Step -1
    For pos2 = Len(StrU(-1,#LONG)) To 1 Step -1
      calc1 = Val(Mid(StrU(hiLONG,#LONG),pos1,1)) * Val(Mid(StrU(-1,#LONG),pos2,1))
      calc2 = (Len(StrU(hiLONG,#LONG))-pos1)+(Len(StrU(-1,#LONG))-pos2)
      buffer1 = Str(calc1) + Left("00000000000000000000",calc2)
      buffer2 = buffer3
      buffer3 = ""
      calc1 = 0
      If Len(buffer1) > Len(buffer2)
        buffer2 = Right("00000000000000000000"+buffer2,Len(buffer1))
      Else
        buffer1 = Right("00000000000000000000"+buffer1,Len(buffer2))
      EndIf
      For pos3 = Len(buffer1) To 1 Step -1
        calc1 + Val(Mid(buffer1,pos3,1)) + Val(Mid(buffer2,pos3,1))
        buffer3 = Right(Str(calc1),1)+buffer3
        calc1/10
      Next pos3
      If calc1 > 0: buffer3 = Str(calc1)+buffer3: EndIf
    Next pos2
  Next pos1
  While Left(buffer3,1)="0"
    buffer3 = Right(buffer3, Len(buffer3)-1)
  Wend
  ProcedureReturn buffer3
EndProcedure

drive.s = "D:\"

Structure Quad
  L1.l  
  L2.l
EndStructure 

GetDiskFreeSpaceEx_(@drive, FB.Quad, TB.Quad, TFB.Quad)

MessageRequester("Drive Size: ",StrDouble(TB\L1,TB\L2)+ " Bytes",0)
End


FileName.s = OpenFileRequester("","C:\*.*","*.*|All Files",1)  ; name of File

If OpenFile(0, Filename)
  lowLONG.l = GetFileSize_(UseFile(0), @hiLONG.l)  ; get size
  MessageRequester("Filesize:",StrDouble(lowLONG,hiLONG) + " Bytes",0)  ; display size
  CloseFile(0)
EndIf

End