Bonjour,

Je travaille avec deux applications Delphi et celles-ci communiquent entre elles via des fichiers.

Je rencontre parfois un problème quand le premier programme est en train d'écrire dans un fichier, le second le lit alors que l'écriture de celui-ci n'est pas terminée puis le supprime.

Je cherche une méthode me permettant de savoir si le fichier est utilisé actuellement (lecture/écriture) afin de l'ignorer pour le lire à la prochaine vérification.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
if FindFirst(ExtractFilePath(Application.ExeName) + 'Tickets\*.txt', faAnyFile, SR)=0 then
begin
     repeat
          AssignFile(Fichier, ExtractFilePath(Application.ExeName) + 'Tickets\' + SR.FindData.cFileName);
          {$I-} Reset(Fichier); {$I+}
          if IOResult = 0 then
          begin
               while not EOF(Fichier) do
               begin
                    ReadLn(Fichier,Ligne);
                    IdTCPClient1.IOHandler.WriteLn(Ligne);
                    Log(Format('Envoi du ticket %s : %s',[SR.FindData.cFileName, Ligne]));
               end;
               CloseFile(Fichier);
               DeleteFile(ExtractFilePath(Application.ExeName) + 'Tickets\' + SR.FindData.cFileName);
          end;
     until FindNext(SR) <> 0;
     FindClose(SR);
end;
Merci,
ZiP