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 7
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
Rejoignez-nous