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 :

CFile et lecture par ligne d'un fichier ...


Sujet :

MFC

  1. #1
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut CFile et lecture par ligne d'un fichier ...
    Bonjour,

    J'ai un petit probl�me

    Je tente de lire un fichier texte en r�cup�rant les donn�es ligne par ligne.
    C'est pas ce qu'on pourrait appeller quelque chose de dur apparemment ...

    et ben si

    Je souhaite utiliser la classe CFile ou alors une autre classe du m�me style mais je n'ai rien trouv� sur google ou sur ce forum qui permette de faire ca (avec des fonctions maison par exemple ...)

    Je suis all� voir la FAQ mais std::... ne me conviens pas ...

    merci

    a+

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    salut,
    pas encore dans la faq, mais dans le post-it de la faq
    http://www.developpez.net/forums/vie...278273#2278273

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Au passage, le code de CStdioFile apprend de belles choses sur la gestion des FILE sous Windows...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut
    Bonjour

    Merci pour vos r�ponse mais appremment ca ne fonctionne pas ....

    Voila le code que j'ai essay� de mettre en place (FAQ) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
       CStdioFile f2 ("c:\\test.txt", CFile::modeRead | CFile::typeText ); 
       CString s1, s2; 
       f2.ReadString(s1); // s1 contient "premiere ligne" 
       f2.Close();
    Si j'ex�cute cela j'ai l'erreur :
    error C2664: '__cdecl CStdioFile::CStdioFile(const unsigned short *,unsigned int)' : cannot convert parameter 1 from 'char [12]' to 'const unsigned short *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

    error C2039: 'ReadString' : is not a member of 'CStdioFile'
    c:\program files\windows ce tools\wce420\workaboutpro\mfc\include\afx.h(1498) : see declaration of 'CStdioFile'
    Comme vous pouvez le voir, je d�veloppe sous WindowsCE (et peut-etre cela a t'il un rapport ...)

    Merci de m'aider SVP

  5. #5
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    ce qui se passe surtout, c'est que tu es en unicode
    essaie
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    CStdioFile f2 (L"c:\\test.txt", CFile::modeRead | CFile::typeText );

  6. #6
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut
    Oui pour ca, bien entendu, ce n'�tait pas le probl�me !
    Le probl�me est que la fonction ReadString() n'existe pas !! (pour WINCE je suppose)
    Si quelqu'un avait le code qui permet de lire par ligne ...

  7. #7
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    effectivement, je n'avais pas fait gaffe que tu �tais sous CE ...

    Malheureusement, cette classe n'a plus grand interet sous CE ... Il va te falloir g�rer les retours � la ligne seul, et utiliser CFile

  8. #8
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut
    Justement je me disais que peut-etre quelqu'un aurait les sources d'une telle fonction
    merci en tout cas

  9. #9
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    sinon, tu peux utiliser les flux c++ http://c.developpez.com/faq/cpp/?pag...ture_par_ligne

    Sinon, si ca te convient pas, j'essaierai de retrouver un �quivalent avec les API, que j'avais fait y a quelques temps

  10. #10
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut
    effectivement je pr�fererais avoir l'�quivalent en utilisant les APIs si c'est possible ...
    merci pour ton aide

  11. #11
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    un truc comme ca, ca devrait marcher
    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
    	#define MEMDISPO (MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN)
     
    	HANDLE hFile; 
    	hFile = CreateFile("monFichier.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    	if (hFile == INVALID_HANDLE_VALUE)
    		return;
    	DWORD dwSize;
    	dwSize = GetFileSize (hFile, NULL);
    	if (dwSize == INVALID_FILE_SIZE)
    		return;
     
    	char * buffer = (char *) VirtualAlloc(NULL, dwSize * sizeof(char), MEMDISPO, PAGE_READWRITE);
    	if (!buffer)
    	{
    		// erreur de mémoire
    		return;
    	}
     
    	DWORD bLu;
    	ReadFile(hFile,buffer,dwSize,&bLu,NULL);
     
    	CString buff = buffer;
    	while (buff.GetLength() > 0)
    	{
    		int res = buff.Find('\n');
    		CString ligne;
    		if (res == -1)
    		{
    			ligne = buff;
    			buff = "";
    		}
    		else
    		{
    			ligne = buff.Mid(0, res - 1);
    			buff = buff.Mid(res + 1);
    		}
    		//AfxMessageBox(ligne);
    	}
     
    	VirtualFree(buffer, 0, MEM_RELEASE);

  12. #12
    Membre �clair�

    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2003
    Messages
    286
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 286
    Par d�faut
    merci !
    ca devrait etre ok

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

Discussions similaires

  1. lecture ligne par ligne d'un fichier texte
    Par toutounesan dans le forum VB.NET
    R�ponses: 4
    Dernier message: 16/06/2011, 18h28
  2. Lecture lignes par lignes d'un fichier-Question "multi-OS"
    Par rambc dans le forum G�n�ral Python
    R�ponses: 3
    Dernier message: 09/02/2009, 15h02
  3. lecture ligne par ligne de 2 fichiers simultan�ment
    Par lavazavio dans le forum Langage
    R�ponses: 6
    Dernier message: 22/12/2008, 14h53
  4. Lecture ligne par ligne d'un fichier - fgets
    Par raphadw dans le forum Biblioth�que standard
    R�ponses: 2
    Dernier message: 22/01/2008, 21h45
  5. R�ponses: 20
    Dernier message: 09/02/2006, 09h45

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