Ouverture fichier en mode exclusif [Résolu]

Signaler
Messages postés
172
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
13 octobre 2008
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,

Je dois réaliser un programme qui rapatrie des fichiers de donnée d'un répertoire a un autre. Donc en gros je "scanne" un répertoire a la recherche de fichier, et dès qu'il y en a un je le deplace dans un autre.

Jusque là pas de soucis. Le problème c'est qu'il arrive que je tente de deplacer un fichier qui n'a pas été completement écrit,et donc j'ai droit à une belle exception.

Après quelques recherches pour résoudre ce problème, voilà la solution que j'ai adoptée:

 --------------------------------------------------------------------------------------
 int Handle;
 Handle= FileOpen( f , fmShareExclusive ); // J'essai d'ouvrir le fichier en mode exclusif
 
 // Si le Handle est different de -1 le fichier est non-utilisé
 if (Handle <> -1) then                    
 begin
   FileClose(Handle) ;
   MaProcedureDeDeplacementDeFichier;
 end;
--------------------------------------------------------------------------------------

Cette solution semble fonctionnée, mais je me dis que ce n'est peut etre pas la plus élegante et qu'il doit en exister d'autres...

Donc j'aimerais savoir si cette solution vous semble adaptée ou si vous avez eventuellement d'autres idées?

Merci d'avance....

1 réponse

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
11
Salut,


Windows est réputé assez lent en matière d'ouverture de fichier, donc c'est dommage d'ouvrir tous les fichiers.


Pourquoi ne pas avoir simplement pas capté l'exception avec un try ... except ?


Si l'exception te gène, tu peux aussi passer par le Win32, avec CopyFile. Elle ne déclenchera pas d'exception, mais tu pourras tester sa valeur de retour pour savoir si la copie s'est bien déroulée.