Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2981 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [VC++][MFC] Fichier/Affichage (pour débutants)

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

[VC++][MFC] Fichier/Affichage (pour débutants)

n°1160612
d_imane
Posté le 26-07-2005 à 18:13:01  profilanswer
 

Bonjour,  
:heink: comment lire et écrire dans un fichier à partir du dialog box (vc++)?
quelqu'un a une idée?


Message édité par d_imane le 30-07-2005 à 11:40:46
mood
Publicité
Posté le 26-07-2005 à 18:13:01  profilanswer
 

n°1160629
Taz
bisounours-codeur
Posté le 26-07-2005 à 18:33:29  profilanswer
 

avec les doigts.

n°1160644
d_imane
Posté le 26-07-2005 à 18:45:51  profilanswer
 

je veux récuperer les données d'un fichier txt et les afficher dans Edit Box, c'était ça ma question??

n°1160845
theshockwa​ve
I work at a firm named Koslow
Posté le 26-07-2005 à 22:52:01  profilanswer
 

tu dois bien avoir un système de CFile, vu que tu sembles être en MFC, recherche de ce côté là

n°1160858
adm1n1s7ra​7eur
Posté le 26-07-2005 à 23:08:37  profilanswer
 

     "je veux récuperer les données d'un fichier txt"
y en a plein de solution , voici une :
/**********************************************************/
FILE*fichier = fopen("le nom physique de ton fichier.txt","r" )
/**********************************************************/
maintenant tu peux utiliser fread() pour lire .
 
pour ta deuxieme question , je peux pas te repondre parceque
 
c'est pas trop clair . si tu utilises les MFC , tu peux  
 
trouver de la documentation dans MSDN .
 
A++
 

n°1160868
theshockwa​ve
I work at a firm named Koslow
Posté le 26-07-2005 à 23:14:40  profilanswer
 

adm1n1s7ra7eur a écrit :

"je veux récuperer les données d'un fichier txt"
y en a plein de solution , voici une :
/**********************************************************/
FILE*fichier = fopen("le nom physique de ton fichier.txt","r" )
/**********************************************************/
maintenant tu peux utiliser fread() pour lire .
 
pour ta deuxieme question , je peux pas te repondre parceque
 
c'est pas trop clair . si tu utilises les MFC , tu peux  
 
trouver de la documentation dans MSDN .
 
A++


 
Non, non et non ...
 
Non seulement, on est dans la catégorie C++ et tu proposes une méthode C, mais en plus, il travaille avec les MFC, qui offrent une solution (elle aussi basée sur des classes) qui sera plus en adéquations avec ses besoins

n°1160879
Joel F
Real men use unique_ptr
Posté le 26-07-2005 à 23:24:50  profilanswer
 

CFile voire CArchive si ton fichier peut etre structuré

n°1160891
adm1n1s7ra​7eur
Posté le 26-07-2005 à 23:31:03  profilanswer
 

************************************************************
"Non, non et non ...  
 
Non seulement, on est dans la catégorie C++ et tu proposes une méthode C, mais en plus, il travaille avec les MFC, qui offrent une solution (elle aussi basée sur des classes) qui sera plus en adéquations avec ses besoins"
************************************************************
 1- çe n'est qu'un petit exemple et il est tout a fait correct .
 
 2- en C++ , elle peut utiliser fstream .
 
 3- je n'utilise pas MFC dans ma programmation graphique ,
 
alors j'en sais pas beaucoups .
 
A++

n°1160958
d_imane
Posté le 27-07-2005 à 00:28:16  profilanswer
 

j'ai utilisé la fonction

Code :
  1. base::write(float a,float b,float c,float d)
  2. {
  3. int i=0,p=0;
  4. size_t l = 0;
  5. float value,val1,val2;
  6. ifstream Al;
  7. xmin=a;
  8. xmax=b;
  9. ymin=c; 
  10. ymax=d;
  11. Dimbase=dim;
  12.     std::vector<vecteur>vect(dim);
  13. Al.open("fich.txt" );
  14. while (i <(Dimbase*2) ) 
  15.  Al >> value;
  16.  val1=value;
  17.     Al >> value;
  18.  val2=value;
  19.     vect[l].x=val1;
  20.     vect[l].y=val2;
  21.     vect[l].id=compt++;
  22.     l++;
  23.  i=i+2;
  24. }
  25. Al.close();
  26. }


ca marche trés bien, mais je veux afficher les valeur de vect(bas.vect[i].x) dans EditBox, j'ai utiliser la fonction:(ne me moquer pas de moi)

Code :
  1. void CTestDlg::OnBase()
  2. {     
  3.     base bas(3.4,39.6,3.4,39.6);
  4.  for(int i=0;i<dim;i++)
  5.  m_Base ="(bas.vect[i].x) ";
  6.  UpdateData(FALSE);
  7. }


2 problèmes :
1.comment afficher la valeur de base.vect[i].x, sachant qu'il s'agit d'un float.
2.avec La boucle for l'affichage s'effectue dans la meme place j'aurai tjs une seul valeure qui apparait dans EditBox
Vous pouvez m'aidez???

n°1160979
Rits75
to?be:!be
Posté le 27-07-2005 à 01:30:30  profilanswer
 

tu crées une variable pour ton composant ListBox (dans le Class Wizard) pour
que ca s'affiche à la suite (pas un edit box)!
 
ensuite ds ta clasee CtestDlg  
tu appelles la methodes SetWindowText() te ton composant.

Code :
  1. CString s;
  2. base bas(3.4,39.6,3.4,39.6);
  3. for(int i=0;i<dim;i++)
  4.   m_listBox.SetWindowText(s.Format("bas.vect[%d].x = %f", i, bas.vect[i].x));


 
un truk dans le genre


Message édité par Rits75 le 27-07-2005 à 01:46:57
mood
Publicité
Posté le 27-07-2005 à 01:30:30  profilanswer
 

n°1161008
d_imane
Posté le 27-07-2005 à 02:24:41  profilanswer
 

j'ai implémenté exactement ta proposition ca générer l'erreur suivante:
error C2039: 'SetWindowTextA' : is not a member of 'CString'

n°1161012
d_imane
Posté le 27-07-2005 à 02:36:53  profilanswer
 

je travaille avec le MCF!!......?

n°1161124
Rits75
to?be:!be
Posté le 27-07-2005 à 10:04:46  profilanswer
 

je sais pas comment tu travailles surtout...:)
 
t'as pas du implementé correctement, car j'ai dit d' apellé la methoded SetWindowText de ton composant ,sous-entendu composant graphique!
Donc c'est normal que SetWindowText n'est pas une methode de CString!
mais plus une methode d'un CListBox!
 
As-tu declaré une variable pour ta CListBox avec le class wizard?
si oui verifie son type, par defaut je crois pas qu'il met le bon type du composant sur visual 6!
 
un peu de msdn ne te ferait pas mal non + ;)


Message édité par Rits75 le 27-07-2005 à 10:05:16
n°1161662
slash33
Posté le 27-07-2005 à 15:34:04  profilanswer
 

CWnd::SetWindowText donc n'importe quel composant dispose de cette méthode. CListBox en fait partie.
 
Par ailleurs SetWindowText ne sert pas à remplir un CListBox. Il faut utiliser CListBox::AddString. Et puis d'abord c'est quoi cette histoire de CListBox? Je croyais que tu utilisais un CEdit? Dans ce cas c'est SetWindowText qu'il te faut. Et n'oublie pas le style 'multiligne'.
 
Bon enfin si tu veux le faire avec une liste box:
 

Code :
  1. CString str;
  2. base bas(3.4,39.6,3.4,39.6);
  3. int nIndex; // n'est pas utilisé
  4. for(int i = 0 ; i < dim ; i++)
  5. {
  6.   str.Format("bas.vect[%d].x = %f", i, bas.vect[i].x);
  7.   nIndex = m_listBox.AddString(str);
  8. }

   


Message édité par slash33 le 27-07-2005 à 15:46:11
n°1161740
Rits75
to?be:!be
Posté le 27-07-2005 à 16:04:16  profilanswer
 

AddString , au temps pour moi! :)
 

Citation :

un peu de msdn ne te ferait pas mal non + ;)


/me sort ->[] :)


Message édité par Rits75 le 27-07-2005 à 16:04:30
n°1161884
blastman
just me !
Posté le 27-07-2005 à 16:45:26  profilanswer
 

ca pu msdn enfin j'y comprend rien j'ai jamais vraimment réussi à m'initier à cette saloperie si vous avez des liens qui donne envi je suis preneur d'ailleur puisque par constat je vois que plein plein de monde l'utilise :/


---------------
http://www.blastmanu.info
n°1162056
slash33
Posté le 27-07-2005 à 18:25:52  profilanswer
 

C'est l'anglais qui te dérange? J'ai rien trouvé de compliqué dans la MSDN... à l'exception de la version CD qui mélange allègrement Java, Visual Basic, Windows, FoxPro, VC, C++, C et j'en passe. Bonjour l'embrouille quand tu ne sais pas exactement ce que tu cherches.  :pt1cable:  
 
Sinon pour se mettre aux MFC, je préfère les bouquins "orientés tutoriel". D'ailleurs c'est à partir de ça que j'ai débuté (de toute façon j'avais pas le choix puisqu'il n'y pas de formation dans la boîte... hormis l'auto-formation  :( )
 
Enfin de temps en temps tu devras faire appel à la WIN32 classique (pas d'équivalent MFC  :whistle: )

n°1162208
blastman
just me !
Posté le 27-07-2005 à 20:54:16  profilanswer
 

slash33 a écrit :


...
Sinon pour se mettre aux MFC, je préfère les bouquins "orientés tutoriel". D'ailleurs c'est à partir de ça que j'ai débuté (de toute façon j'avais pas le choix puisqu'il n'y pas de formation dans la boîte... hormis l'auto-formation  :( )
...


 
tu peut m'en citer stp ? ou alors tu as des liens à me conseiller ?
 
A chaque fois que je commence à lire des trucs ca me saoule vite fait donc ca fait que je lis à moitié et à la fin je comprend rien :/


---------------
http://www.blastmanu.info
n°1162556
slash33
Posté le 28-07-2005 à 09:21:07  profilanswer
 

Celui par lequel j'ai débuté: "MFC Programmation Sous Windows 95" - aux éditions Eyrolles.
C'est une traduction de l'oeuvre originale:
"Programming Windows 95 with MFC" de Jeff Prosise aux éditions Microsoft Press.
ISBN : 1-55615-902-1
 
Par contre c'est un bouquin qui date. Il doit en exister de plus récents.
 
Je vais commander "Mastering MFC" un de ses jours... qui n'est pas orienté tutoriel comme tu peux l'imaginer. J'étais tombé sur une sélection des meilleurs livres sur les MFC. Si je la retrouve, je te donne le lien.
 
Pour les MFC, http://www.codeproject.com est probablement la référence. Par contre c'est tout en anglais. Tu trouveras des articles destinés à tous les niveaux de maîtrise.


Message édité par slash33 le 28-07-2005 à 09:27:51
n°1162962
blastman
just me !
Posté le 28-07-2005 à 13:17:35  profilanswer
 

ok merci, pour le site qui est en anglais c'est encore mieux puisque je cherche à progresser ;)


---------------
http://www.blastmanu.info
n°1164049
d_imane
Posté le 28-07-2005 à 22:49:47  profilanswer
 

est ce qu'il ya possiblité d'afficher dans une ListBox deux elements dans une meme ligne séparees par un espace???

n°1164161
d_imane
Posté le 29-07-2005 à 00:23:42  profilanswer
 

voila ce n'est pas ci difficile que ca non

Code :
  1. for(int i=0;i<dim;i++)
  2. for(int j=0;j<2;j++)
  3. str.Format(" id/Data/code= %d apx[%d].id apx[%d].Datapx[%d]",i,i,j);
  4. m_ListeApproximation.AddString(str);
  5. }

n°1164190
adm1n1s7ra​7eur
Posté le 29-07-2005 à 01:21:13  profilanswer
 


ça se passera comme un chaine de caractere :)

n°1164261
slash33
Posté le 29-07-2005 à 09:09:12  profilanswer
 

adm1n1s7ra7eur a écrit :

ça se passera comme un chaine de caractere :)


Mais qu'est-ce que tu as bien pu vouloir dire??  :??:
 

d_imane a écrit :

voila ce n'est pas si difficile que ca non?


Il faudrait nous donner le détail de la structure apx. Ca paraît bon.
 
Edit: ha non... ->
str.Format(" id/Data/code= %d apx[%d].id apx[%d].Datapx[%d]",i,i,j);
 
Il y a 4 %d et seulement 3 paramètres. Faute de frappe?
 
Au fait pour faire plus pro, CListCtrl ne t'intéresse pas?


Message édité par slash33 le 29-07-2005 à 09:29:45
n°1164403
d_imane
Posté le 29-07-2005 à 10:54:54  profilanswer
 

Citation :


str.Format(" id/Data/code= %d apx[%d].id apx[%d].Datapx[%d]",i,i,j);  
Il y a 4 %d et seulement 3 paramètres. Faute de frappe?  


C plutot le sommeil qui produit ca? :pt1cable:  
apx est une class de la forme:

Code :
  1. class Approximation
  2. {
  3. public:
  4. int id;                      //id du vecteur
  5. int *code;                   //code en binaire
  6. float *Datapx;               //xy
  7. Approximation();
  8. void initialiser(int dimbase,int bitcod);
  9. virtual ~Approximation();
  10. };


Pour l'affichage je crois que le probléme est réglé:

Code :
  1. for(int i=0;i<dim;i++)
  2. { int j=0,p=0;
  3.    
  4. str.Format(" id / Data / code= %d      %f     %f    %d %d %d %d %d %d %d %d",apx[i].id,apx[i].Datapx[j],apx[i].Datapx[j+1],apx[i].code[p],apx[i].code[p+1],apx[i].code[p+2],apx[i].code[p+3],apx[i].code[p+4],apx[i].code[p+5],apx[i].code[p+6],apx[i].code[p+7]);
  5. m_ListeApproximation.AddString(str);
  6. }


Je sais ce n'est pas agréable à lire mais ca résoud comme meme le problème s'il y a une autre proposition you're welcom

n°1164429
slash33
Posté le 29-07-2005 à 11:07:47  profilanswer
 

Oui enfin personnellement j'aurai construit la chaîne en plusieurs fois mais oui ça doit être bon. Par contre c'est vrai que côté lisibilité...  ;)
Heu pourquoi tu as des variables p et j qui restent tout le temps à 0, c'est quoi l'intérêt?
 
Pour revenir à ma proposition; un CListCtrl en mode "Report" ça n'aurait pas fait l'affaire? Pour te faire comprendre de quoi je parle, l'explorateur de fichiers est un CListCtrl en mode "Report".
Par contre, c'est effectivement un peu plus compliqué mais c'est nettement plus sympa.
 
Dernier point: concernant ta classe apx. Est-ce qu'on t'as jamais dit qu'il fallait éviter les membres publics? C'est très risqué d'exposer les membres sauf à justifier ce choix. Par ailleurs, comme tu n'utilises pas de mécanisme requérant une classe, une structure aurait suffit (oui tu peux définir des méthodes et même des constructeurs dans une structure C++ pas C).


Message édité par slash33 le 29-07-2005 à 11:16:51
n°1164483
Joel F
Real men use unique_ptr
Posté le 29-07-2005 à 11:28:36  profilanswer
 

les ostringstream c pas mal non plus ....

n°1164487
slash33
Posté le 29-07-2005 à 11:31:43  profilanswer
 

Oui mais le rapport avec les MFC?

n°1164489
d_imane
Posté le 29-07-2005 à 11:33:32  profilanswer
 

oh, execuse j'ai pas copié tt le programme, dans la suite j'incrémente bien sur le j et p;jet p sont de taille differente qui est elle auusi differete de i.
pour le CListCtrl, je vais essayer de l'utiliser mais pas mnt, il faut deja que mon programme marche.
j'ai choisi l'attribut public car je dois acceder à ces membres apres.

n°1164500
Rits75
to?be:!be
Posté le 29-07-2005 à 11:39:48  profilanswer
 

tu peux utiliser "\t" ds tes chaines de caracteres pour faire une tabulation plutot que de mettre plein d'espace.
 
str.Format(" id / Data / code= %d\t%f\t%f\t%d %d %d %d %d %d...

n°1164504
slash33
Posté le 29-07-2005 à 11:41:13  profilanswer
 

Pour la tabulation j'ai un sérieux doute, est-ce qu'elles vont être correctement interprêtées?? Je m'attend à voir un paté à la place. Je parle de l'affichage dans le CListBox bien sûr.


Message édité par slash33 le 29-07-2005 à 11:42:00
n°1164651
d_imane
Posté le 29-07-2005 à 13:30:35  profilanswer
 

Rits75 a écrit :

 
str.Format(" id / Data / code= %d\t%f\t%f\t%d %d %d %d %d %d...


\t me sort un caractére bizart

n°1164682
slash33
Posté le 29-07-2005 à 13:59:12  profilanswer
 

Ouais, je m'y attendais.

n°1165007
Joel F
Real men use unique_ptr
Posté le 29-07-2005 à 16:23:15  profilanswer
 

slash33 a écrit :

Oui mais le rapport avec les MFC?


Le rapport ? ben ostringstream permets de pas se faire chier avec des chaines de formatages de 100 pieds de long [:pingouino] masi bon je vous laisse nager dans votre fourbi pas standard ...

n°1165012
theshockwa​ve
I work at a firm named Koslow
Posté le 29-07-2005 à 16:26:13  profilanswer
 

Joel F a écrit :

Le rapport ? ben ostringstream permets de pas se faire chier avec des chaines de formatages de 100 pieds de long [:pingouino] masi bon je vous laisse nager dans votre fourbi pas standard ...


ils utilisent des CString, pas des std::string ... *MFC powered* :whistle:

n°1165016
slash33
Posté le 29-07-2005 à 16:28:28  profilanswer
 

Merci theShOcKwAvE, tu m'évites une explication.
 
Sinon techniquement, est-ce que ça vaut le coût de faire du mix MFC/STL?


Message édité par slash33 le 29-07-2005 à 16:29:22
n°1165028
Joel F
Real men use unique_ptr
Posté le 29-07-2005 à 16:33:56  profilanswer
 

Non a part pour se faire chier ... masi deja utiliser CString denotes d'une profonde tendance maso

n°1165037
slash33
Posté le 29-07-2005 à 16:37:29  profilanswer
 

Ben on fait du MFC à fond ou pas du tout non?

n°1165043
Joel F
Real men use unique_ptr
Posté le 29-07-2005 à 16:39:16  profilanswer
 

perso je me debrouille pour separer l'interface 100% MFC du code de production qui lui utilise la STL, BOOST etc ...
Au final, peut de changement d'un coté comme de l'autre

n°1165048
slash33
Posté le 29-07-2005 à 16:41:06  profilanswer
 

On peut utiliser la STL côté données et les MFC pour l'interface. Oui je sais je l'ai déja fait. La question était est-ce judicieux de le faire?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [VC++][MFC] Fichier/Affichage (pour débutants)

 

Sujets relatifs
[Visual C++/MFC] Femeture boite de dialogueprob acces membres de classes pour fichier inclus en path absolu
[Visual C++/MFC] Onglets[Visual C++/MFC] Creation dynamique
[JavaScript]ouvrir un fichier texte [Fixed]Probleme de modification dans un fichier!
fichier pkg....comment s'en servir?[Pear::Spreadsheet] Fichier non créé
Date et heure en nom de fichierComment lire un fichier en mode binaire octet par octet ?
Plus de sujets relatifs à : [VC++][MFC] Fichier/Affichage (pour débutants)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR