Obwohl die Frage für den TE bereits beantwortet wurde, vielleicht doch noch die Antwort auf die Frage:
Delphi-Quellcode:
...
Result := F.FindData.nFileSizeLow or (F.FindData.nFileSizeHigh shl 32);
...
SHL 32 schiebt alles um 32 Bit nach links. So wie es ist, ist das Ergebnis aber ein 32Bit Integer. Somit werden die 32 Bits ins Nichts geschoben und man erhält ein falsches Ergebnis.
Ohne das jetzt nachzuprüfen, das sollte das Problem beseitigen:
Delphi-Quellcode:
...
Result := Int64(F.FindData.nFileSizeLow) or (Int64(F.FindData.nFileSizeHigh) shl 32);
...
//EDIT
Ups, sehe gerade, himitsu hat schon drauf hingewiesen. Sorry, hab nicht alle Beitröge vorher gelesen.