Давал ведь ссылку, где русским языком сказано, что FileSize надо брать такой:
//Внимание!!! - не проверено на больших (>2Г) файлах
function FileSize( const Path : String ) : Int64;
type T = record L,H:DWORD end;
var FD : TWin32FindData;
FH : THandle;
begin
FH := FindFirstFile( PChar( Path ), FD );
Result := 0;
if FH = INVALID_HANDLE_VALUE then exit;
T(Result).L := FD.nFileSizeLow;
T(Result).H := FD.nFileSizeHigh;
FindClose( FH );
end;