Peut-on savoir su un fichier est déjà utilisé par un autre processus?

Messages postés
123
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
7 août 2018
- - Dernière réponse : cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- 24 juil. 2012 à 16:44
Bonjour,

j'ai parfois une erreur indiquant que le fichier dans lequel est sauvée une TSringList est occupé par un autre processus. Pourtant aucun autre processus n'accède à ce fichier.
Y a-t-il un moyen de savoir à l'avance si ce fichier est accessible avant de générer l'erreur, car je n'ai pas réussi à la gérer avec des I- et des I+..
merci
Afficher la suite 

1 réponse

Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Bonjour,

vite fait sur le gaz et un peu brut de décoffrage si ça peut t'aider :

function InUse(MyFileName: string): boolean;
var
  HFileRes: HFILE;
begin
  Result := false;
  if not FileExists(MyFileName) then
    exit;
  HFileRes := CreateFile(pchar(MyFileName), GENERIC_READ or GENERIC_WRITE, 0, nil,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  Result :(HFileRes INVALID_HANDLE_VALUE);
  if not Result then
    CloseHandle(HFileRes);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if InUse('C:\MonDossier\MonFichierEnCours.exe') then
  begin
    ShowMessage('Fichier occupé');
  end
  else
  begin
    ShowMessage('Fichier libre');
  end;
end;



cantador
Commenter la réponse de cs_cantador