Libérer clé USB après utilisation d'un SaveDialog [Résolu]

Signaler
-
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
-
Bonjour à tous,

J'ai une application développée avec Delphi 7 qui fonctionne sur Win7 64bit où j'ouvre un SaveDialog pour permettre à l'usagé de sauvegarder son fichier où il le veut bien. La plupart du temps, les usagés choisissent de sauvegarder sur une clé USB. Mais dès que le SaveDialog passe par la clé USB, il devient impossible d'éjecter la clé USB en toute sécurité. Le seul moyen pour libérer la clé USB est de fermer l'application. Est-ce qu'il y a moyen de libérer la clé USB sans être obligé de fermer l'application?

Merci

David

4 réponses

Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
15
Salut,

Une manière simple (simpliste ?) de résoudre le problème, qui fonctionne sous D7 et XP32 :

var
  OldPath: string;
begin
  OldPath := GetCurrentDir;
  if SaveDialog1.Execute then
  begin
    MonFichierASauver.SaveToFile(SaveDialog1.FileName);
    ChDir(OldPath);
  end;
end;


ChDir ramène sous le répertoire initial (OldPath) ce qui permet de libérer la clé usb, à condition bien sûr que le répertoire initial ne soit pas situé sur celle-ci...
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
15
On peut faire aussi avec SetCurrentDir :
var
  OldPath: string;
begin
  OldPath := GetCurrentDir;
  if SaveDialog1.Execute then
  begin
    MonFichierASauver.SaveToFile(SaveDialog1.FileName);
    SetCurrentDir(OldPath);
  end;
end;
C'était trop simple. Ça fonctionne. Merci beaucoup!

David
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
15
Alors tu peux valider la ou les réponses qui te conviennent.
Ça ne me donne pas un dollar de plus...
Mais ça permet à quelqu'un qui chercherait sur le forum une réponse à cette question de venir voir ici, puisque le problème est marqué comme étant "résolu"