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 :

lecture fichier texte


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Par défaut lecture fichier texte
    bonjour

    je souhaite remplir une combobox à partir d'un fichier texte
    j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CString CFichiers::LitMagasins()
     
    {
     
    	CString res=("");
    	CStdioFile f(L"magasin.txt",CFile::modeRead);
    	char ligne[257];
    	while (f.Read(ligne,256)>0)
    		res+=ligne;// enregistrement
    	f.Close();
    	return(res);
     
    }
    CFichiers est le nom de ma combo
    mon fichier texte se trouve sur l'appareil
    mon problème est le suivant :
    il enregistre tout comme un seul enregistrement et sépare mes ligne par un 
    je récupère des données de la façon suivante en format csv:
    nom_magasin;gencod;prix;
    à la récupération, il me compte 2 enregistrement
    nom_magasin
    puis ÿÿÿÿÿÿÿ;gencod;prix;
    je ne sais pas d'ou sortent les ÿÿÿÿÿÿÿ;
    serait ce un problème de format de fichier ?

    merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Salut,
    La fonction Read() lit un certain nombre de bytes (ici 256). Il faut docn que chacune de tes lignes de ton fichier texte comporte 256 bytes!
    Dans to cas tu devrais utiliser la fonction ReadText() qui elle lit une ligne jusqu'à rencontrer \r\n.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Par défaut pb lecture fichier texte
    merci pour ton aide mais ca ne marche pas

    error C2039: 'ReadText' : is not a member of 'CStdioFile'

    je continu de chercher

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    Les caractères doivent surement venir de l'encodage ... ANSI, UNICODE.

    Les CString sont UNICODE il me semble, essaie c'est un tableau de TCHAR.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 76
    Par défaut
    J'ai codé cette fonction pour Windows CE mais ça doit presque pareil :
    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
    /*************** Gestion des fichiers ***************/
     
    /**
    @brief Fonction de lecture d'un fichier texte
    Fonction qui ouvre et lit un fichier texte.
    @param strPathFile Chemin du fichier
    @return Caractères lus
    @code
    CString strFile = m_motoFonc->ReadFile(L"\\Texte.txt");
    @endcode
    */
    CString CMotoFonc::ReadFile(CString strPathFile, bool bUnicode)
    {
    	CFile m_file; 
    	if (!m_file.Open(strPathFile, CFile::modeRead)) // test si fichier existe
    	{
    		return L"";
    	} 
    	else 
    	{ // le fichier existe
    		if (!bUnicode)
    		{
    			// lecture du fichier
    			int tailleLue=0;
    			int tailleFichier = m_file.GetLength(); // taille du fichier
    			char* bufferLecture = new char[tailleFichier]; // buffer de lecture
    			tailleLue = m_file.Read((void *) bufferLecture, tailleFichier); //lecture
    			m_file.Close(); // fermeture du fichier
     
    			CString str(bufferLecture);
    			delete []bufferLecture;
    			return str;
    		}
    		else
    		{
    			// lecture du fichier
    			int tailleLue=0;
    			int tailleFichier = m_file.GetLength(); // taille du fichier
    			wchar_t* bufferLecture = new wchar_t[tailleFichier]; // buffer de lecture
    			tailleLue = m_file.Read((void *) bufferLecture, tailleFichier); //lecture
    			m_file.Close(); // fermeture du fichier
     
    			CString str(bufferLecture);
    			delete []bufferLecture;
    			return str;
    		}
    	}
    }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Citation Envoyé par mymeal Voir le message
    merci pour ton aide mais ca ne marche pas

    error C2039: 'ReadText' : is not a member of 'CStdioFile'

    je continu de chercher
    Oui désolé petite erreur de frappe, il fallait lire ReadString

    http://msdn.microsoft.com/en-us/libr...yf(VS.80).aspx

    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Par défaut pb insertion texte
    merci alen et crossrobotik

    j'ai essayé le ReadString mais j'ai toujours la même erreur

    error C2039: 'ReadString' : is not a member of 'CStdioFile'

    de plus il me ramène maintenant vers mes includes
    mfc\include\afx.h(1498) : see declaration of 'CStdioFile'
    me manquerait il un bout de déclaration dans un fichier.h?
    pourtant, je reste persuadé que mon pb vient d'une histoire de format de fichier ou que mes déclarations ne sont pas faite comme il faut

    merci

Discussions similaires

  1. Lecture fichier texte
    Par vince-60 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/04/2006, 14h15
  2. [VB]Probleme lecture fichier text et affichage
    Par clochardevobsy dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2006, 08h46
  3. lecture fichier texte et ...
    Par Nils30 dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2006, 11h55
  4. lecture fichier text et renvoi du contenu en byte *
    Par JulienT dans le forum Réseau
    Réponses: 3
    Dernier message: 02/01/2006, 13h21
  5. Lecture fichier text
    Par krfa1 dans le forum ASP
    Réponses: 13
    Dernier message: 25/11/2005, 08h00

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