Libérer clé USB après utilisation d'un SaveDialog

Résolu
DavidDSA - 3 mai 2013 à 20:48
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 - 7 mai 2013 à 00:11
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

korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
3 mai 2013 à 21:43
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...
3
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
4 mai 2013 à 19:41
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;
3
C'était trop simple. Ça fonctionne. Merci beaucoup!

David
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
7 mai 2013 à 00:11
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"
0
Rejoignez-nous