NOTES :
Le principe de détection est basé sur un essai d'ouverture et le test du code d'erreur 32 indiquant une violation de partage.
CODE :
Unit Unit1; // // Sujet : Tester si un fichier est déjà ouvert // // Par Nono40 : http://nono40.developpez.com http://nono40.fr.st // mailTo:nono40@fr.st // // Le 23/03/2003 //
Procedure TForm1.Button1Click(Sender: TObject); Var F:TextFile; Begin // Sélection du fichier IfNot OpenDialog1.Execute Then Exit;
// Test du fichier
AssignFile(F,OpenDialog1.FileName); {$I-}
Reset(F); {$I+} Case IOResult Of // Pas d'erreur
0 :Begin
CloseFile(F);
ShowMessage('Le fichier existe et n''est pas ouvert.'); End; // L'erreur 32 est une violation de partage
32:ShowMessage('Le fichier est déjà ouvert.'); Else // Autre erreur
ShowMessage('Erreur '+IntToStr(IOResult)); End; End;