utilise un TFileStream en SharedDeny, tu pourras détecter si le fichier est utilisé !
Voir la FAQ : Tester si un fichier est déjà ouvert.
Tu ne pourras pas contrer ce bloquage sans risque
Des outils comme Unlocker qui le font
Il doit y avoir des API (certaines solutions ferment le Handle d'un processus, cela doit chier des bulles après)
Sinon ton code est d'une complexité !!!
Sans compter les PChar, il n'est pas très rigoureux sur les libération de ressources
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| procedure TransfererEnreg(RepertSource, RepertDestination : String) ;
Var
SearchRec: TSearchRec;
SrcTime, DestTime: TDateTime;
begin
if FindFirst(RepertSource, faAnyFile, SearchRec) then
begin
SrcTime := FileDateToDateTime(SearchRec.Time);
FindClose(SearchRec); // Tu avais oublié cela !
if FindFirst(RepertDestination, faAnyFile, SearchRec) then
begin
DestTime := FileDateToDateTime(SearchRec.Time);
FindClose(SearchRec);
end
else
DestTime := -1;
if DestTime <> SrcTime then
CopyFile(PChar(RepertSource), PChar(RepertSource), False);
end;
end; |
TransfererEnreg('W:\test\tableSou.db', 'C:\test\tableDest.db');
Partager