Problème : Récupération des données d'un Buffer pour mettre dans une EditBox

Signaler
Messages postés
8
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
31 janvier 2004
-
Messages postés
8
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
31 janvier 2004
-
Bonjour
Mon problème est le suivant : J'ai ouvert un fichier, lu ses données, et jusque là ça va. Mais ensuite je voudrais récupérer ces données, pour les afficher dans une EditBox.

Par exemple, j'ai un fichier nommé fichier.txt, avec dedans marqué "coucou".
J'ai ceci comme code :

	HANDLE hFile;
hFile = CreateFile("fichier.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
BOOL bBuffer;
ReadFile(hFile,&bBuffer,120,NULL,NULL);
CloseHandle(hFile);


Le problème c'est que je sais pas du tout comment faire pour récuperer le "coucou" du fichier texte qui doit être dans bBuffer normalement, pour l'afficher dans une EditBox avec la fonction :

SetDlgItemText(...);


Voilà, en espérant que quelqu'un pourra aider un débutant ;=)
Merci

8 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
STOP:
BOOL bBuffer;
ReadFile(hFile,&bBuffer,120,NULL,NULL);

Deja ici tu dois planter sur ReadFile.
J'ai mis un max de sources qui lisent et ecrivent un fichier.
Va voir avecMSDN ouvert a cote. Regarde bien les parametres.
Tu ne mettras jamais 120 octets a l'adresse d'un 32 bits (ton bBuffer). Il manque aussi le pointeur sur un DWORD que ReadFile remplit du nbr d'octets lus.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
8
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
31 janvier 2004

Ok merci, je vais étudier ces sources ^^
Messages postés
8
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
31 janvier 2004

J'ai regardé les sources disponibles, mais je n'arrive toujours pas à faire ce que je veux (dsl je débute :p), avec les fonctions que j'ai utilisées plus haut (surtout pour la partie concernant l'EditBox).
Quelqu'un pourrait m'aiguiller avec un petit bout de code svp?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Colle ici un morceau de mes codes qui lisent un fichier, on etudiera la partie qui ne te semble pas assez claire.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
8
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
31 janvier 2004

Je me suis sans doute mal exprimé, mais c'est pas le fait de lire un fichier qui me pose problème, mais d'utiliser ce qu'on a lu pour l'afficher dans une EditBox : cette étape-ci me fait défaut. Car quand on a lu un fichier, les données sont enregistrées dans un buffer (BOOL), le problème c'est que je vois pas comment utiliser ces données et les afficher à l'aide de SetDlgItemText(), qui demande une chaîne de caractère, et non un type BOOL.
Voilà, en espérant que je me suis exprimé plus clairement :=)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
un buffer BOOL, mais cela n'a aucun sens, BOOL est un alias de 'int' donc tu ne stockerais que 4 octets maxi, et si je comte le zero final a mettre pour pouvoir l'afficher, il ne te reste que 3 caracteres inserables a l'adresse d'un BOOL.

Lis tes octets du fichier dans un buffer:
char buff[260]; // par exemple
DWORD dwread = 0;
ReadFile(hfl, buff, 259, &dwread, 0);
if(!dwread) .... // RIEN de lu depuis hfl
if(dwread > 259) ... // ERREUR GRAVE
buff[dwread] = 0; // FIN de chaine pour afficher
SetWindowText(hedit, buff);

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
8
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
31 janvier 2004

Hmm je comprend mieux...
Merci, je vais changer mon code, et je tiens au courant :D
Messages postés
8
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
31 janvier 2004

C'est magnifique, je viens de réussir ce que je voulais, vraiment merci beaucoup :D

PS : J'ai fait un autre post, si tu as une réponse à ce post, je veux bien la connaître :=)