Accés au Fichier

Résolu
Lamarmottedu73 Messages postés 19 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 14 mai 2009 - 28 nov. 2007 à 15:13
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 29 nov. 2007 à 11:13
Salut tlm, j'ai un petit problème de fichier j'ai une idée pour le résoudre mais je ne trouve pas comment le faire. Voici le problème :
Un programme génère des fichiers et les copies dans un dossier.
Le 2eme programme via un thread lit ces fichiers au fur et à mesure qu'ils arrivent, puis les déplaces. Seul problème c'est que défoit le 2eme programme est trop rapide par rapport au programme 1 et zou "Violation d'accés" car il accède encore au fichier.

Ma solution serait de tester si le fichier est fermé et que je peux y accéder sans problème, mais je ne trouve pas comment le faire.

Merci bien pour votre aide.

4 réponses

Lamarmottedu73 Messages postés 19 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 14 mai 2009
28 nov. 2007 à 16:27
Re finalement c'est good méthode un peu bourrin mais ça marche et ça donne cela


while (1=1) do
begin
   Handle := FileOpen(Fichier_a_ouvrir, $0040);      //On essaye d'ouvrir le fichier en mode exclusif
   if Handle <> -1 then                                             //Si le résultat est différent de -1 cela veux dire que cela à marché
   begin
      FileClose(Handle);                                            //On ferme le fichier
      //*** Faire ce qu'il y a à faire ***//
   end;
end;

Voilà bonne soirée !!!!
3
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
28 nov. 2007 à 20:39
petite question, pourquoi while (1=1) do et pas while true do ?
autre chose, il serait peut etre judicieux de faire un sleep dans ta boucle pour ne pas surcharger le systeme de fichier, et peut etre aussi de mettre un nombre de boucles max, au cas ou ton fichier reste ouvert par l'autre programme
3
Lamarmottedu73 Messages postés 19 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 14 mai 2009
29 nov. 2007 à 10:46
Salut en fait c'est juste un code exemple c'est pas le final !!! sinon je risque d'assoir la machine !!! Mais tes remarque sont judicieuse ... Pour le while (1=1) do en fait c'est une conneri qu'on avait fait en BTS IRIS avec des potes.
A bientôt
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
29 nov. 2007 à 11:13
salut,

ce genre de system (utiliser une fichier comme moyen de communication entre deux programme) est pas terrible, lent (accès disque) et souvent problematique (concurrence).

Il existe des moyen de partager des info entre processus (par ex: filemap). Perso, je trouve que UDP peut être un très bon moyen (simple, assez rapide). surtout pour un serveur (après tu peux bouger un des processus sur une autre machine en 2min). Evidemment cela dépend de ce que tu veux faire et de ton environnement.

réflèchit, et demandes toi si tu ne peux pas remplacer ce système par qqch de plus propre.

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0
Rejoignez-nous