Grazie a tutti e 2.
La rename va "quasi" bene. Leggendo qui http://www.freepascal.org/docs-html/rtl/sysutils/renamefile.html infatti dice che in Linux fallisce nel caso in cui sorgente e destinazione sono in partizioni differenti. Per aggirare il problema, mi sono fatto la funzione qui sotto:
function SpostaFile(FilePart, FileDest:String):Bool;
begin
//Se non esiste il file di partenza, è inutile proseguire
if (not FileExistsUTF8(FilePart)) then begin
Result:=False;
end else begin
try
//Cancello il file di destinazione
DeleteFileUTF8(FileDest);
//RenameFileUTF8 fa anche la move, ma non funziona in linux se sorgente e destinazione
//sono su partizioni diversi.
//Per gestire la cosa faccio così: provo con RenameFileUTF8, se non funziona,
//faccio la copia e la cancellazione del file di partenza
Result:=RenameFileUTF8(FilePart, FileDest);
if (not Result) then begin
//Copio il file ...
Result:=FileUtil.CopyFile(PChar(FilePart), PChar(FileDest), True);
//... se è tutto Ok, cancello il file di partenza
if Result then begin
Result:=DeleteFileUTF8(FilePart);
end;
end;
except
//Se c'è stato un errore durante lo la copia o la cancellazione, faccio in modo
//che il programma non si interrompa
Result:=False;
end;
end;
end;
Ciao, Mario