Ouverture fichier en mode exclusif [Résolu]

Messages postés
172
Date d'inscription
mardi 11 novembre 2003
Dernière intervention
13 octobre 2008
- - Dernière réponse : cs_rt15
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
- 15 janv. 2008 à 12:51
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....
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
3
Merci
voilà un exemple bien noté dans lequel tu peux peut-être puiser :

http://www.delphifr.com/codes/DEPLACEMENT-FICHIER-AUTOMATISE_35174.aspx

cantador

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_rt15

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.