#ifnDef TRUE #define TRUE .T. #define FALSE .F. #endif function Do_it() local FileSize ?FileSize_Get('Z:\tmp\test_2.txt', @FileSize), FileSize endfunc *--------------------------------------------------------------------------- #Define MAX_PATH 260 function FileSize_Get(FileName, FileSize) declare Integer FindFirstFile in Kernel32.dll string @, String @ declare Integer FindClose in Kernel32.dll Integer local Success Success = TRUE local FindFileData, Handle, FileSizeHigh, FileSizeLow FindFileData = replicate(chr(0), 4+8+8+8+4+4+4+4+MAX_PATH+14) Handle = FindFirstFile(@FileName, @FindFileData) do case case m.Handle < 0 Success = FALSE otherwise FileSizeHigh = substr(m.FindFileData, 29, 4) FileSizeLow = substr(m.FindFileData, 33, 4) FileSize = CharToBin(m.FileSizeHigh) * 2^32 + CharToBin(m.FileSizeLow) =FindClose(m.Handle) endcase return m.Success endfunc *--------------------------------------------------------------------------- function CharToBin(word) local i, out out = 0 for i = len(m.word) to 1 step -1 out = m.out * 256 + asc(substr(m.word, m.i, 1)) endfor return m.Out endfunc *----------------------------------------------------------------------------