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

Signaler
Messages postés
121
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
7 août 2018
-
cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
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

1 réponse

Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
11
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