DELPHI CopyFile : "erreur fichier utilisé par un autre processus"
Silvere6
Messages postés7Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 9 juillet 2004
-
10 juin 2004 à 10:41
Silvere6
Messages postés7Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 9 juillet 2004
-
15 juin 2004 à 09:30
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é !
;-)
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 11 juin 2004 à 01:33
Essaye ca :
Function CopyFile(Source,Destination:String):Boolean; // copy "source" to "destination"
begin
{$I-}
Result:=Windows.CopyFile(pchar(Source),pchar(Destination),True);
{$I+}
end;
Silvere6
Messages postés7Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 9 juillet 2004 11 juin 2004 à 10:33
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...
Silvere6
Messages postés7Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 9 juillet 2004 11 juin 2004 à 16:59
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...
Silvere6
Messages postés7Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 9 juillet 2004 14 juin 2004 à 14:21
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 !
Silvere6
Messages postés7Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 9 juillet 2004 15 juin 2004 à 09:30
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 !