Fopen VS Fichier.Open

Résolu
cs_kididouille
Messages postés
20
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2009
- 20 juin 2006 à 15:49
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
- 20 juin 2006 à 17:15
Bonjour,
Vous savez comment faire pour que l'utilisateur puisse ouvrir un fichier en le choisissant dans la boite de dialogue "Ouvrir" (Comme la "Enregistrer sous")
En MFC pour un fichier texte par exemple:

CString NomFichier;
CFileDialog FileData(TRUE,"*.txt",NULL,OFN_OVERWRITEPROMPT,"Fichiers textes(*.txt)|*.txt||",this);
 FileData.DoModal();
 NomFichier=FileData.GetPathName();
 CFile Fichier;
  if(Fichier.Open(NomFichier,CFile::modeRead))
 {
  Fichier.Read(Oùjeveuxlemettre,Combienjeveuxenmettre*latailledecequejemet);   //sizeof(...)
  Fichier.Close();
 }

Avec cette construction là lorsque la boite de dialogue "Ouvrir" apparait, si je fais annuler tout va bien elle disparait,pas de Bug (grace au if (Fichier.Open....))

Mais dans mon programme (et c'est la qu'est le probleme), je dois utiliser la fonction de c  fopen
ca me donne:

CString NomFichier;
FILE* donnee;
 CFileDialog FileData(TRUE,"*.txt",NULL,OFN_OVERWRITEPROMPT,"Fichiers texte(*.txt)|*.txt||",this);
 FileData.DoModal();
 NomFichier=FileData.GetPathName();
 donnee=fopen(NomFichier,"r");

Si je fais annuler NomFichier n'a pas de valeur et ca bug...
Quelqu'un arrive-t-il à parer ce bug dû au "annuler" avec fopen???
D'avance Merki!!
Nos

4 réponses

ymca2003
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
20 juin 2006 à 17:04
Faut tester le retour de la boîte de dialogue

if(FileData.DoModal() != IDOK)
  return;
3
niketou
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

20 juin 2006 à 16:20
une condition du genre:

if (NomFichier !=NULL){
NomFichier=FileData.GetPathName();
 donnee=fopen(NomFichier,"r");
}

non?
0
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
20 juin 2006 à 16:25
Je ne sais pas comment fonctionne les MFC mais logiquement, si tu clic sur annuler, tu doit sauter par dessus toute commande qui require le nom receuille par CFileDialog:

if(!Fichier.Open(NomFichier,CFile::modeRead))
    return 0;

par exemple.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
20 juin 2006 à 17:15
Merci pour la correction. Je n'utilise pas les MFC. Je suis du même avis que BruNews la dessus.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0