Probl�me dans l'utilisation de saveFileDialog
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 :
Code:
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);
} |
Cela fonctionne si le nom du fichier donn� est nouveau.
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� :
Code:
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);
} |
Et �a plante toujours comme si l'instruction rajout�e n'�tait pas ex�cut�e ...
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:
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 :roll:
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.