IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

MFC:Lecture de fichier


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Par d�faut MFC:Lecture de fichier
    Salut, je n'arrive pas � lire dans le fichier suivant:

    12
    -765 -50 -181
    -762.675 -50.957 -181.207
    -768.974 -50.960 -181.209
    -765.698 -47.353 -181.205
    -765.698 -53.706 -181.210
    -762.643 -50.518 -184.870
    -768.999 -50.524 -184.872
    -765.397 -53.677 -184.873
    -765.394 -47.376 -184.867
    -765.399 -47.367 -189.663
    -765.399 -53.670 -189.668
    -762.648 -50.311 -189.662

    ce que je voudrai, c'est afficher dans une zone de liste, par exemple
    cylindre de 12 points

    et dans une autre zone de liste les points
    points a: -765 -50 -181
    etc...

    Mon probl�me c'est la lecture parce que j'affiche
    cylindre de 0 points

    j'ai utilis�, ifstream(nomFichier, ios::in)
    nomFichier c'est le chemin du fichier sur le disque

    Si quelqu'un peut m'aider, ce serai cool,merci.

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    pour la lecture dans le fichier:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ifstream fichier;
    fichier.open(nomfichier);
    fichier >> nbPoints;
     
    //1ère solution
    for (int i=0;i<nbPoints) {
        fichier >> coordX >> coordY >> coordZ;
    }
     
    /*
    2ème solution
    while (!fichier.eof()) {
        fichier >> coordX >> coordY >> coordZ;
    }
    */
     
    fichier.close();
    pour ton histoire de liste, tu veux parler d'une CListCtrl?
    si oui, et si personne ne t'a r�pondu d'ici 1 heure, je devrais pouvoir te filer du code. pour l'instant je suis chez moi, mais faut que je bouge au boulot

  3. #3
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut Re: MFC:Lecture de fichier
    Citation Envoy� par phneutre
    j'ai utilis�, ifstream(nomFichier, ios::in)
    Remarque : Pour les classes ifstream et ofstream le mode par d�faut est respectivement ios::in et ios::out, il est inutile de pr�ciser ios::in.

  4. #4
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Par d�faut
    j'entre bien dans le fichier mais j'ai toujours
    cylindre de 0 points

  5. #5
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    tu peux me montrer le code ou me mettre un lien pour que je le t�l�charge?

  6. #6
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Par d�faut
    cette fonction permet la lecture des points

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    BOOL TsurfPalp::lecture(CWnd* ptMaFen, const char* nomFic)
    {
    	ifstream source; 
    	source.open(nomFic); 
     
    	if(!source) // peut se produire si l'utilisateur tape le nom d'un fichier inexistant
    	{
    		ptMaFen->MessageBox("Impossible d'ouvrir le fichier !\nVérifiez le nom du fichier.",
    			                 VERSION, MB_OK|MB_ICONEXCLAMATION);
    		return FALSE;
    	}
     
    	source >> NbPts;
     
    	if(NbPts < 1)
    	{
    		ptMaFen->MessageBox("Le nombre de points spécifié dans le fichier est nul\
                                 !\nVérifiez le fichier.",VERSION, MB_OK|MB_ICONEXCLAMATION);
    		return FALSE;
    	}
     
    	double x, y, z;
    	source >> x >> y >> z;
    	PtAppro.X(x); PtAppro.Y(y); PtAppro.Z(z);
     
    	P= new vecteur [NbPts];
    	unsigned int i=0;
    	do
    	{
    		source >> x >> y >> z;
          P[i].X(x); P[i].Y(y); P[i].Z(z);
    	}
    	while( (source.eof()!=1)&&(++i < NbPts) );
     
    	if(source.eof()==1)
    	{
    		ptMaFen->MessageBox("Le nombre de points spécifié dans\nle fichier est \
    							 trop grand ! Vérifiez le fichier.",VERSION, MB_OK|MB_ICONEXCLAMATION);
    		delete [] P;
    		return FALSE;
    	}
     
    	char finFic;
    	source>>finFic;//la fin de fichier peut etre sur la ligne suivant
    						// le dernier point.
    	if(source.eof()==0)
    	{
    		ptMaFen->MessageBox("Le nombre de points spécifié dans\nle fichier est \
    							 trop petit ! Vérifiez le fichier.",VERSION, MB_OK|MB_ICONEXCLAMATION);
    		delete [] P;
    		return FALSE;
    	}
    	return TRUE;
     
    }
    j'ai bien le fichier sur le disque , mais j'entre quand m�me dans le
    if(!source)

    mais si je le met en commentaire,
    source >> NbPts; me donne 0 points.

    c'est dans cette partie que j'ouvre mon fichier
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ...............
    ....................
    if(clg->DoModal() ==IDOK)
    		{
    			//m_CritereIdentification = clg->m_CritereIdentification;
    			TRACE("critere = %s\n");
     
    			// On crée un objet fichier
    			CFile fichier;  
     
    			VERIFY(fichier.Open(dlg.GetPathName(), CFile::modeRead));
    			//fichier.Open(dlg.GetPathName(), CFile::modeRead);
    			TRACE("file= %s \n",dlg.GetPathName());
     
     
    			CString nomChemin = dlg.GetPathName();
    			char* Chemin = strchr(nomChemin, 'E');
    			TRACE("nom du chemin %s\n",Chemin);
     
    			if (nomChemin)
    			{
    				char* nomFichier= strrchr(Chemin, '\\');	
    				// retourne un pointeur vers le dernier caratere anti-slasche de la chaine nomChemin
     
    				nomFichier++;
    				// On l'incremente pour qu'il pointe vers le 1er caratere du nom du fichier seul 
    				// (sans le chemin).
     
    				TRACE("nom du fichier %s\n",nomFichier);
     
    				TsurfPalp* ptSfPalp = new TsurfPalp(_typeSurf, nomFichier);
    ....................
    ....................
    vu que GetPathName retourne un CString et que je travaille avec des char, j'ai h�sit� � faire un strcpy, � la place de
    char* Chemin = strchr(nomChemin, 'E');

  7. #7
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    pour v�rifier si ton fichier existe ou pas:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    if((_access(nomChemin!= -1) // = si le fichier existe
    {
     
    //si j'entre là, alors mon fichier existe
     
    }
    voir la FAQ (cherche _access)

    dlg est un objet de quelle classe? si c'est un CFileDialog, tu peux simplifier la r�cup�ration du nom du fichier:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    CString nomFichier = dlg.GetFileName()
    � la place de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    char* nomFichier= strrchr(Chemin, '\\');
    // retourne un pointeur vers le dernier caratere anti-slasche de la chaine nomChemin 
     
    nomFichier++;
    // On l'incremente pour qu'il pointe vers le 1er caratere du nom du fichier seul
    // (sans le chemin).
    dans ton
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if(clg->DoModal() == IDOK
    c'est "clg" ou "dlg" comme � la suite?

    en ce qui concerne le passage CString � char*, je ne sais pas si on peut faire un strcpy, mais on peut faire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    //csILGFile est un CString
    LPCTSTR lpszILGFile(csILGFile);
    string sILGFile(lpszILGFile);
    const char * chILGFile = sILGFile.c_str();
    (un peu lourd, je te l'accorde)

    tu es sur qu'on peut faire 'if (!source) {}' :

    sinon, je ne sais pas ce qui ne va pas dans ton code. je vais tester voir.

    moi par exemple, j'ai une boite de dialogue avec un bouton qui permet l'ouvre d'une boite de dialogue standard 'ouverture d'un fichier'. je code l'�v�nement click sur le bouton Open comme �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    void CTab1::OnTab1BtnFileopen() 
    {
    	// TODO: Add your message handler code here and/or call default
     
    	CFileDialog OpenFileDlg(TRUE,
    							"*.ilg",
    							"",
    							 OFN_EXTENSIONDIFFERENT 
    							|OFN_HIDEREADONLY 
    							|OFN_NONETWORKBUTTON 
    							|OFN_OVERWRITEPROMPT,
    							"ILG Files (*.ilg)|*.ilg||",
    							this);
     
    	// Initialisation du répertoire de départ
        OpenFileDlg.m_ofn.lpstrInitialDir = ".";
     
    	// Affichage de la fenêtre Ouverture et capture le résultat
    	if (OpenFileDlg.DoModal()==IDOK)
    	{
    		// Récuparation du nom et du path du fichier sélectionné
    		CString csILGFile = OpenFileDlg.GetFileName();
    		CString csILGPath = OpenFileDlg.GetPathName();
     
    		if((_access(csILGPath,0))!=-1) //si le fichier existe
    		{
    			if((_access(csILGPath,4))!=-1) //si j'ai les droits en lecture
    			{
      				// Conversion du nom du fichier: LPCTSTR --> CString --> const char *
    				// et affectation du const char * à la variable externe chILGFile
    				LPCTSTR lpszILGFile(csILGFile);
    				string	sILGFile(lpszILGFile);
    				chILGFile = sILGFile.c_str();
     
    				// Instanciation et initialisation de la variable externe GLO
    				GLO = new so_globale();
    				GLO->initialisation();
     
    				// Lecture du fichier de donnée
    				lecture_bdd_fichier();
    ...
     
    }

  8. #8
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    tu trouveras ici le projet, l'ex�cutable et un fichier test

    n'utilises pas Internet Explorer, il refuse le t�l�chargement
    par contre Mozilla ou Netscape, c'est bon

    il y a une boite de dialogue avec un bouton Open. il ouvre le fichier si celui existe et si tu as les droits en lecture. ensuite il appelle une fonction 'lecture_fichier' qui lit les donn�es contenus dans le fichier et les affiches sous forme de MessageBox pour v�rifier qu'on r�cup�re les infos

    j'esp�re que �a r�pondra � tes attentes

    enjoy

  9. #9
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Par d�faut
    j'ai pas reussi � telecharger avec netscape

  10. #10
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    je t'ai mis �a ici

    jav� po u le temps de faire �a proprement au boulot

  11. #11
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    10
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Par d�faut
    ton code m'a aid� � voir plus clair, merci.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MFC]lecture d'un fichier mp3
    Par r0d dans le forum MFC
    R�ponses: 6
    Dernier message: 26/01/2006, 02h55
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    R�ponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    R�ponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    R�ponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    R�ponses: 2
    Dernier message: 03/09/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo