Ändere mal FTPGetFile so ab:
Delphi-Quellcode:
Result := FtpGetFile(hconnect, pchar(localfile), pchar(remotefile), false, fmCreate, FTP_TRANSFER_TYPE_UNKNOWN or INTERNET_FLAG_RELOAD, 0);
fmCreate erstellt direkt die Datei neu.
INTERNET_FLAG_RELOAD Flag sagt dem Server er soll die Datei direkt vom Server holen nicht vom Cache.
Die WinInet APIs haben für sowas immer einen Cache und wenn man nicht direkt sagt, er soll die geänderte Datei abrufen nihmt er die Datei, die er bereits runtergeladen hat.
EDIT: Ach und mach mal bei deiner getFile Funktion immer try...finally rein. Die anderen Handles musst du auch mit InternetCloseHandle beenden.
Gruß NickelM