Bonjour,
J'ai v�velopp� un programme qui �crit des donn�es dans un fichier temporaire nomm� "output.tmp" ..
Quand on ferme le programme, je donne � l'utilisateur la possibilit� de sauvegarder ces donn�es en renommant le fichier et j'utilise le code suivant :
Cela fonctionne si le nom du fichier donn� est nouveau.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { String^ file_name = gcnew String(""); file_name = saveFileDialog1->FileName::get(); File::Move ("output.tmp",file_name); }
Par contre si le fichier existe d�j�, �a plante m�me si on a r�pondu qu'on accepte de remplacer le fichier.
J'ai donc rajout� :
Et �a plante toujours comme si l'instruction rajout�e n'�tait pas ex�cut�e ...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { String^ file_name = gcnew String(""); file_name = saveFileDialog1->FileName::get(); if (File::Exists (file_name)) File::Delete (file_name); File::Move ("output.tmp",file_name); }
J'ai eu l'impression que Windows ex�cute le Move avant le Delete ...
Pour m'en assurer j'ai fait une horreur du genre :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 if (saveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) { String^ file_name = gcnew String(""); file_name = saveFileDialog1->FileName::get(); if (File::Exists (file_name)) File::Delete (file_name); a: if (File::Exists (file_name)) goto a; File::Move ("output.tmp",file_name); }
Et l� �a marche
J'ai donc plusieurs questions:
1- Pourquoi avec la forme simple le saveFileDialog ne d�truit pas lui m�me le fichier existant quand on lui dit qu'on accepte le remplacement?
2- Pourquoi le Move s'ex�cute apparemment avant le Delete?
3- Comment faire �a proprement?
Merci d'avance � ceux qui pourront �clairer ma pauvre lanterne.
Bonne journ�e.
Partager