DELPHI CopyFile : "erreur fichier utilisé par un autre processus"

Signaler
Messages postés
7
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
9 juillet 2004
-
Messages postés
7
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
9 juillet 2004
-
Salut

Je ne parviens pas à copier un fichier avec la fonction DELPHI\CopyFile alors que j'y arrive sans pb avec l'explorateur et la commande "COPY" sous l'intepreteur de commande. L'erreur suivante se produit :

"Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus" (code erreur 32)

Le fichier est effectivement ouvert par une appli qui le met regulierement à jour mais comment peut-on forcer la copie ??

Merci pour votre aide et longue vie à la communauté !
;-)

Silvère

7 réponses

Messages postés
378
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013

Essaye ca :

Function CopyFile(Source,Destination:String):Boolean; // copy "source" to "destination"
begin
{$I-}
Result:=Windows.CopyFile(pchar(Source),pchar(Destination),True);
{$I+}
end;

Bon Coding ....

ManChesTer.
Messages postés
7
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
9 juillet 2004

Merci chef, c'est exactement une directive comme celle-là que je cherchais mais le pb c'est qu'apparamment elle était déjà activée car je n'avais aucun message d'erreur dans mon traitement. Je suis allé récuperer le message pour voir ce qui se passait.
En fait, cette directive inhibe juste les messages d'erreurs pour pouvoir effectuer un traitement personnalisé à l'intérieur du programme. Je cherche une directive ou un paramètre qui force la copie en cas de verrouillage fichier, un peu comme les programmes de sauvegarde. Ca doit etre possible car la commande COPY du DOS ne m'indique aucun pb...Etrange d'ailleurs...

:question)

Merci et bonne journée toute la tribu !
Messages postés
7
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
9 juillet 2004

Excellent ta routine japee, je te remercie elle pourra me servir. Malheureusement, dans mon cas présent, mon programme est executé sur une machine distante sur laquelle je n'est pas la possibilité de créer un fichier batch...
L'explorateur Windows effectue également la copie sans probleme mais pas la commande Delphi CopyFile...

comprend pu :sad) ...

Bon we tout le monde !

;)
Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
3
J'ai mis à jour mon code source.

J'ai rajouté une autre manière de procéder, utilisant WinExec, et ne nécessitant pas de fichier .bat additionnel.

Ca pourrait-y marcher ?

Sinon, bon courage :)
Messages postés
7
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
9 juillet 2004

Merci tout le monde pour toutes ces astuces ! Ca va, je vois qu'y en a qui taquine avec Delphi ! ;)
J'ai enfin résolu le problème qui ne venait pas du fichier source mais du fichier de destination !

Merci et a+ !

Silvère
8-)
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
2
Content pour toi !

Si tu pouvais expliquer ce qui se passait pour tout le monde ...

Ken@vo
____________________
Code, Code, Codec !
Messages postés
7
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
9 juillet 2004

Puisque tu insistes...

Le fichier en question est une base de donnée Access que je dois rapatrier sur une machine pour traitement.
Dans l'évènement FormCreate de ce dit traitement, j'avais un "Database1.Connected := true;" Database1 étant la BDD associée au fichier destination du backup que je devais effectuer. Cette BDD étant donc ouverte par mon processus, je ne pouvais pas l'écraser.

CQFD

Et puisqu'il faut que tout le monde en profite, Kenavo ca serait sympa que tu commentes un peu plus ton code et son utilisation. Je n'ai pas encore ton niveau d'expérience !

A+ la tribu

Silvère