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 :

Lire un fichier et mettre le r�sultat dans un buffer


Sujet :

MFC

  1. #1
    Membre �clair� Avatar de Colbix
    Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Par d�faut Lire un fichier et mettre le r�sultat dans un buffer
    Voila, je vais voir sur le FAQ, je trouve ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    HANDLE hFile; 
    hFile = CreateFile("test.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if (hFile == INVALID_HANDLE_VALUE)
    return false;
    DWORD dwSize;
    dwSize = GetFileSize (hFile, NULL);
    if (dwSize == INVALID_FILE_SIZE)
    return false;
    char *buffer = new char[dwSize+1];
    DWORD bLu;
    ReadFile(hFile,buffer,dwSize,&bLu,NULL);
    // ...
    delete buffer;
    C'est parfait, ca compile et ca affiche tout ce qu'il faut, mais le probl�me est que lorsque j'�crit sur mon fichier, il me dis que le fichier est d�j� utilis�.

    Voila ce que je fait, en gros qui me donne cette erreur :
    readFile() // qui appel le code ci dessus
    writeOnFile("coucou")
    Que dois-jet faire ?
    Le CreateFile ne g�ne pas si le fichier existe d�j� ????

    Merci de votre patience
    Colb.

  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
    si je peux me permettre une suggestion, c'est d'uniformiser les technos en utilisant la capacit� du framework .Net � g�rer les entr�es sorties.
    A quelques adaptations pr�s pour pouvoir l'utiliser avec le C++ .Net 1.x, regarde de ce cot� http://dotnet.developpez.com/faq/cpp...ge=file#rwtext

  3. #3
    Membre chevronn� Avatar de Mayti4
    Inscrit en
    F�vrier 2004
    Messages
    442
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 442
    Par d�faut
    Le CreateFile ne g�ne pas si le fichier existe d�j� ????
    Le fichier doit exister (OPEN_EXISTING).

    Il te manque le flag GENERIC_WRITE.

  4. #4
    Membre �clair� Avatar de Colbix
    Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Par d�faut
    Merci !
    Je vasi regarder sur le FAQ !

    Pour le flag GENERIC_WRITE, je ne crois pas, il compile parfaitement... Mais je vasi un peu me renseigner

    A bient�t, je vous tien au courant.
    Colb.

  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
    si tu choisis d'utiliser l'api win32, je te sugg�re de regarder l'aide dans la msdn

    que ca compile ne veut pas dire que ca marche et que ca soit adapt� � ton besoin.
    Dans ce cas, le flag sera diff�rent (ou une combinaison) en fonction de si tu veux lire ou �crire, si tu veux cr�er un fichier, �craser le fichier, etc ...

  6. #6
    Membre �clair� Avatar de Colbix
    Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Par d�faut
    Citation Envoy� par nico-pyright(c)
    si tu choisis d'utiliser l'api win32, je te sugg�re de regarder l'aide dans la msdn

    que ca compile ne veut pas dire que ca marche et que ca soit adapt� � ton besoin.
    Dans ce cas, le flag sera diff�rent (ou une combinaison) en fonction de si tu veux lire ou �crire, si tu veux cr�er un fichier, �craser le fichier, etc ...
    Hihi, vui, je sais, mais la ca faisait partiellement ce que j'avais besoin .

    Enfin bon, j'ai regard� sur le FAQ le lien que tu m'avais pass�. J'utilise d'abord tel quel, et j'ai des pbl denouveau ...
    Evidement je met des * au lieu des ^ etc, mais il ne reconnais pas toutes les fonction (j'ai pourtant fait l'include de IO).

    Voila les erreurs :
    error C2065: 'gcnew' : undeclared identifier
    error C2065: 'nullptr' : undeclared identifier
    error C2146: syntax error : missing ';' before identifier 'StreamReader'
    error C2146: syntax error : missing ';' before identifier 'StreamWriter'
    error C3604: 'System::IO::StreamReader': can only create a __gc type object on the __gc heap
    error C3604: 'System::IO::StreamWriter': can only create a __gc type object error C3861: 'gcnew': identifier not found, even with argument-dependent lookup
    En tout cas le ReadLine() me semble plus apropri� � mes besoin (comme tu disais ).
    Merci des vos r�ponses

  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
    alors, gcnew est � remplacer par new.
    nullptr est � remplacer par null

    ca devrait suffire pour commencer

  8. #8
    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 fait, en ce qui concerne l'ouverture avec l'API Windows : Je pense que tu oubliais simplement de fermer le fichier apr�s lecture : on utilise la fonction CloseHandle() pour cela.
    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.

  9. #9
    Membre �clair� Avatar de Colbix
    Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Par d�faut
    Tr�s bien, je vais essay�.
    Il faut aussi remplacer "finally" par "__finally".

    Bon ca marche, enfin ca compile, mais j'aimerai mettre toutes les ligne dans un buffer pour ensuite faire quelquechose du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    myForm->texBox->Text = leBuffer
    Affin d'afficher sur le form le contenu du fichier
    A bient�t

  10. #10
    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
    deux choses :
    - il y a un commentaire dans le code de la faq expliquant que pour lire tout d'un coup, on peut utiliser readToEnd
    - tu aurais pu le trouver d'ailleurs en consultant l'aide

  11. #11
    Membre �clair� Avatar de Colbix
    Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Par d�faut
    Hum vui c'est vrai, je me suis laiss� emporte � vous demander comment faire au lieu de rechercher un peu...
    En tout cas, ca fonctionne parfaitement maintenant, �norme merci

    Voici mon code final pour les prochains qui seront peut-�tre dans le besoi nde faire un truc aussi simple et qui comme moi se plante partout. lol.
    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
    [	private: System::Void readFile(String* nomFichier)
    		 {
    			StreamReader* sr;
    			StreamWriter* sw;
    			String* line;
    			try
    			{
    				if (! File::Exists(nomFichier))
    				{
    					// Le fichier n'existe pas. On le crée.
    					sw = new StreamWriter(nomFichier);
    					sw->WriteLine("Bonjour. Nous sommes le {0} et il est {1} ",
    						DateTime::Now.ToLongDateString(),
    						DateTime::Now.ToLongTimeString());
    					sw->Close();
    					// Remarque : On peut utiliser sw = File::AppendText(NomFichier) pour ajouter
    					// du texte à un fichier existant
    				}
    				// Ouverture du fichier et écriture du contenu du fichier sur la console
    				sr = new StreamReader(nomFichier);
    				//Console::WriteLine("Début du fichier");
    				line = sr->ReadToEnd();
    				this->text_logView->Text = line;
     
    			}
    			__finally
    			{
    				// Fermeture streamreader
    				if (sr != NULL) sr->Close();
    			}
     
    		 }
    C'est pil poile ce qu'il y a dans le FAQ a part que je lis le fichier en entier

    Encore merci !
    A tr�s bient�t
    Colb.

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

Discussions similaires

  1. Lire une ligne et mettre le r�sultat dans des variables
    Par www.rubis dans le forum Shell et commandes GNU
    R�ponses: 5
    Dernier message: 06/05/2014, 15h23
  2. R�ponses: 2
    Dernier message: 04/07/2012, 16h32
  3. [Batch] lire dans un fichier et mettre le r�sultat dans une variable
    Par danydan01 dans le forum Scripts/Batch
    R�ponses: 1
    Dernier message: 09/06/2010, 12h28
  4. R�ponses: 2
    Dernier message: 27/04/2007, 13h45
  5. Lire un fichier Texte d'1 bloc dans une chaine
    Par User dans le forum Langage
    R�ponses: 6
    Dernier message: 13/09/2006, 21h56

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