Какая-то лажа у Delphi 4 получается при операциях с Int64.
У меня в одной программе с Int64 лажа шла, никак не мог найти причину.
Сейчас попробовал на Delphi 7 - всё нормально.
var
dwTotalLow, dwTotalHigh: DWORD;
cbTotal, cbReaded: Int64;
dwTotalLow := GetFileSize(hInputFile, @dwTotalHigh);
cbTotal := dwTotalLow or (Int64(dwTotalHigh) shl 32);