Ouverture fichier en mode exclusif [Résolu]

Sat83 172 Messages postés mardi 11 novembre 2003Date d'inscription 13 octobre 2008 Dernière intervention - 14 janv. 2008 à 16:49 - Dernière réponse : cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention
- 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
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 14 janv. 2008 à 21:21
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

Merci cs_cantador 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_cantador
Meilleure réponse
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 15 janv. 2008 à 12:51
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.

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes 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.