caracteres chelous avec ReadFile() ????

Résolu
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 4 août 2005 à 19:45
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008 - 8 août 2005 à 11:04
Salut j'ai un probleme tout con avec Readfile()

HANDLE hdl;



hdl=CreateFile(data3,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

if (hdl != INVALID_HANDLE_VALUE) {

DWORD dwSize;


dwSize = GetFileSize (hdl,
NULL);


if (dwSize !=
INVALID_FILE_SIZE) {


char *buffer =
new char[dwSize+1];

DWORD bLu;



ReadFile(hdl,buffer,dwSize,&bLu,NULL);



[.....]



delete buffer;



}

CloseHandle(hdl);



si le fichier contient

debut

donné

fin

je me retrouve avec buffer =

debut


donné


finyy¤$^^$$^$$^$



Pourtant ma valeur de dwSize est bonne !!!

17 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2005 à 20:17
OUPS:
buffer[bLu] = 0;

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2005 à 20:16
char[blu] = 0;

ciao...
BruNews, MVP VC++
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
4 août 2005 à 20:23
nickel merci !!!
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 août 2005 à 20:24
Salut,

Je ne vois aucune erreur dans ton code. Puisque tu as fait char *buffer = new char[dwSize+1]; je
suppose que tu as réservé le dernier char pour ajouter 0 qui marque la
fin d'une chaine de caractères. Si tu n'oublies pas de faire buffer[dwSize]=0; la chaine s'affichera correctement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 août 2005 à 20:27
Complètement grillé racpp :)
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 août 2005 à 20:28
Désolé, j'ai posté ma réponse avant de rafraichir la page. J'ai donc pas vu les autres réponses.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 août 2005 à 20:31
vecchio56 >> BruNews est toujours le plus rapide. :)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2005 à 20:41
pas moi, c'est ma persane qui a répondu.

ciao...
BruNews, MVP VC++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
4 août 2005 à 20:51
BruNews >> ça doit figurer dans le guinness des records :

21866 points

8830 réponses dans le forum.

136 sources.



Un seul mot: BRAVO
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
4 août 2005 à 21:20
En faite BruNews personne le sait mais c'est Billou $$$ lol

Et moi aussi j'veux figurer dans le livre des reccords, il doit bien
avoir une place pour moi dans la catégorie grand sexe ? Je suppose en
tout cas :)

Et Vecchio ne me dis pas qu'il est interdit de tricher pour rentré dans le livre ;)
void Aurevoir( void ); //Bonne journée
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
7 août 2005 à 19:41
en rajoutant moi meme le char d'escape dans une chaine j'ai parfois eu
des problemes de delete, en effet le programme lors de l'execution
crashe dessus, la seule parade que j'ai trouvé c'est de réinitialiser
le pointeur avec une taille de 0 avant de l'effacer. Mais je supose que
la mémoire n'est pas libérée lorsque l'on fait ça ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 août 2005 à 20:02
ah non alors, changer son pointeur d'adresse, que soit 0 ou autre, n'informe en rien le systeme de libérer la mémoire.

ciao...
BruNews, MVP VC++
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
7 août 2005 à 20:10
oui c'est bien ce que je me disais, mais alors, est-il deja arrivé
d'avoir un probleme de ce type a quelqu'un d'autre et sa solution ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 août 2005 à 21:15
en général s'il y a crash c'est que tu dépasses la taille allouée en écrivant sur la zone mémoire, ça écrit sur les variables de ton prog et de la vient le crash car le pointeur d'instruction a été modifié.

ciao...
BruNews, MVP VC++
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
8 août 2005 à 09:59
donc dans le cad d'un pointeur de type char*, dans le delete je dois
spécifier la taille ? comme ça ? delete[MaTaille] MonPointeur ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 août 2005 à 10:14
pour un tableau, c'est:
delete [] tableau;

ciao...
BruNews, MVP VC++
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
8 août 2005 à 11:04
c'est justement ce que je fais .

merci quand meme, je vous donnerez un exemple des que je retomberais sur cette erreur
0
Rejoignez-nous