Prb avec CfileDialog

talaron Messages postés 21 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 21 avril 2005 - 25 févr. 2004 à 10:54
max7544 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 10 janvier 2006 - 10 janv. 2006 à 11:10
J'utilise CFileDialogue pour enregistrer des données dans mon prog et mon probleme est que l'orsque je fais autre chose que de taper le chemin le prog bug et tout ce ferme. Impossible de faire annuler ou de cliquer fermer.
Voici mon bout de code:

char ptr;
CString load;
CFileDialog dlg2(true);

dlg2.DoModal();
load=dlg2.GetPathName();

m_Donnees.stream = fopen(load,"r");
if(m_Donnees.stream==NULL)
{
perror("fopen");
exit(1);
}

// Algo d'ecriture //
for(int l=0 ; l<64 ; l++)
{
for(int c=0 ; c<64 ; c++)
{
fread(&ptr,1,1,m_Donnees.stream);
if (ptr=='X') m_Donnees.T1.Array2[l][c]="X";
if (ptr=='O') m_Donnees.T1.Array2[l][c]="O";
if (ptr=='\n') c--;
}
}

Si quelqu'un avait une petite idée que je n'ai pas eu ça serait sympa.
merci.

13 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
25 févr. 2004 à 13:15
controle avt load en faisant un essai d'ouverture...
personnellement, j'utilise CFileDialog avec bcp + d'options que ça,
et une des options spécifie que le fichier doit être valide...

Je te commuque ça prochainement...

Magicalement,

Magic Nono: l'informagicien!
0
talaron Messages postés 21 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 21 avril 2005
25 févr. 2004 à 14:36
J'attend ca avec impatience.

Ca m'interesse de programmer ca avec plus de rigueur.
merci.
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 févr. 2004 à 15:34
// boîte de dialogue de demande d'ouverture de fichier
CFileDialog fileDlg(TRUE, NULL, NULL, OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_LONGNAMES, "Tout fichier (*.*)|*.*|", this);

// si on on a fermé la boîte de dialogue sans sélectionner de fichier
if(fileDlg.DoModal() != IDOK)
return;

// nom du fichier
CString strFileName = fileDlg.GetPathName();
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 févr. 2004 à 15:38
oups sorry ce que je vient de mettre c'est pour ouvrir un fichier.

pour enregistrer un fichier :
// boîte de dialogue de demande d'ouverture de fichier
CFileDialog fileDlg(FALSE, NULL, NULL, OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY|OFN_LONGNAMES, "Tout fichier (*.*)|*.*|", this);

// si on on a fermé la boîte de dialogue sans sélectionner de fichier
if(fileDlg.DoModal() != IDOK)
return;

// nom du fichier
CString strFileName = fileDlg.GetPathName();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
talaron Messages postés 21 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 21 avril 2005
25 févr. 2004 à 16:10
merci ymca

du coup ca donne ca:

char ptr;
CString load;
CFileDialog dlg2(true);

if(dlg2.DoModal() != IDOK)return;

load=dlg2.GetPathName();

m_Donnees.stream = fopen(load,"r");
if(m_Donnees.stream==NULL)
{
perror("fopen");
exit(1);
}

et tout fonctionne bien merci.
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
26 févr. 2004 à 17:45
ymca2003> tu m'enlève les mots du clavier...
bien répondu!
au fait, pour la liste des extentions, il me semble que cela doive se terminer par deux '|' !!

donc ta cde deviens
FileDialog fileDlg(FALSE, NULL, NULL, OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY|OFN_LONGNAMES, "Tout fichier (*.*)|*.*||", this);

je V tenté d'être + complet avec 2 exemples

talaron >
exemple complet d'un enregistrement...
spécifi au - le 2e param de CFileDialog !!!

void CTracePrgDlg::OnBToFichier()
{
/// --------------------------------------------------------------
/// ---------------- CTracePrgDlg::OnBToFichier() ----------------
/// --------------------------------------------------------------
/// ----- Objectif : envoi du contenu de la fenêtre de sortie dans un fichier dont le choix est proposé
/// ----- Auteur(s) : magic Nono 05/09/03
/// ----- PreCond : /
/// ----- PostCond : /
/// ----- Etat : 1 (-1<0<1<2)
/// ----- MaJ 23/10/03: boîte avec types par défauts
/// --------------------------------------------------------------
/// ----- Var Utilisées de la classe (1) : m_sRep
/// ----- Var Internes à la fonction (4) : boite ,ficC ,ficCible ,plomp
/// ----- Var Utilisées par adresse (1) : ficCible
/// ----- Var In Globales Constantes (6) : IDCANCEL ,OFN_EXTENSIONDIFFERENT ,OFN_NOCHANGEDIR ,OFN_NOREADONLYRETURN ,OFN_OVERWRITEPROMPT ,OFN_PATHMUSTEXIST
/// ----- Var In-Out (1) : m_sRep
UpdateData(true);
CFileDialog boite(false,"txt","resultatMetaProg", OFN_NOCHANGEDIR|OFN_EXTENSIONDIFFERENT|OFN_NOREADONLYRETURN|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,"fichier texte (.txt)|*.txt|Note Bruno(.b)|*.b|autre |*.*||", NULL ); // NOM SOFT
if(boite.DoModal()==IDCANCEL)
return;
BString ficCible;
ficCible=boite.GetPathName(); //enregistre le chemin d'accès du fichier selectionné
if(ficCible !="" && ficCible[0]!='*') //un not in...
{
BFichierTxt ficC(ficCible,"wt");
BString plomp;
plomp=m_sRep;
plomp.winFormat(false);
ficC+=plomp;
}
UpdateData(false);
}

et 2e ex: 1 lect et un enregistrement...

void DParamTraitement::OnBTraceDestChoix()
{
UpdateData(true);
CFileDialog boite(false,"b",m_sDestTrace, OFN_NOCHANGEDIR|OFN_EXTENSIONDIFFERENT|OFN_NOREADONLYRETURN|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,"Note ou Trace Bruno (.b)|*.b|fichier texte (.txt)|*.txt|autre |*.*||", NULL );
if(boite.DoModal()==IDCANCEL)
{
UpdateData(false);
return;
}
BString ficCible;
ficCible=boite.GetPathName(); //enregistre le chemin d'accès du fichier selectionné
m_sDestTrace=ficCible;
UpdateData(false);
}

void DParamTraitement::OnBBStringLightEmplacementChoix()
{
UpdateData(true);
BString chIni;
chIni=m_sBStringLightPath;
chIni+="BStringLight.*";
CFileDialog boite(true,NULL,chIni, OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,"headers|*.h;*.hpp||", this );
if(boite.DoModal()==IDCANCEL)
{
//m_sBStringLightPath="";
UpdateData(false);
return;
}
BString plomp=boite.GetPathName(); //enregistre le chemin d'accès du fichier selectionné
m_sBStringLightPath=BFichier::extraitChemin(plomp);
UpdateData(false);
}

rq: mes BString sont des chaines, dispo parmi mes srces

rq2: on n'a pas parlé ici de récupérer plsrs fichiers à la sélection...

Kenavo...
Magic Nono: l'informagicien!
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
26 févr. 2004 à 17:49
talaron >
oups, je voulais dire le 4e, pas le 2e:
celui ac : OFN_FILEMUSTEXIST

Magic Nono: l'informagicien!
0
max7544 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 10 janvier 2006
5 janv. 2006 à 12:13
bonjour magic nono et les autres,
voila j'ai un petit probleme:
j'aimerais forcer l'ouverture d'un fichier dans une apllication MFC, mais pas à partir d'un path mais , ouvrir le dernier fichier enregister à partir d'un path.
y'a t'il une fonction du CFileDialog qui me permette de réaliser cette objectif?
merci d'avance,
max.
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
5 janv. 2006 à 15:27
regarde du coté des "MRU"

Most Recent Used Files

___________________________________________________________
Magicalement
Nono
0
max7544 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 10 janvier 2006
5 janv. 2006 à 15:50
d'accord,
magicmerci.
0
max7544 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 10 janvier 2006
9 janv. 2006 à 11:04
salut à tous et à toi magicnono,
en fait les mru ne correspondent pas au besoin.
Je crée une image à partir d'un numérique, et une fois enregister(sous un path precis(avec une date de création etc..) j'aimerais automatiser ca relecture directe dans une fenetre mfc(j'ai deja ca relecture à partir d'un chemin).
Comment mettre en coulisse le fait qu'il ouvre le dernier fichier enregistré?

au fait, bonne année.
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 janv. 2006 à 17:17
sav du chemin ds fichier de conf ou ds bdr & au démarrage si la cible existe

ouvre là

et lis là.

___________________________________________________________
Une Magicale année
Nono
0
max7544 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 10 janvier 2006
10 janv. 2006 à 11:10
j'ai opté pour un strcmp plutot. j'étais fatigué hier et pas les yeux en face des trous!
merci en tout cas pour ta réactivité et tes conseils.
bonne journée
0
Rejoignez-nous