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

cs_Gerard Messages postés 121 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 7 août 2018 - 23 juil. 2012 à 18:55
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 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

1 réponse

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 juil. 2012 à 16:44
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
0
Rejoignez-nous