Pb WriteFile

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 16 août 2005 à 22:08
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 16 août 2005 à 22:49
Bonsoir Bonsoir ma tite famille :) lol

Donc j'ai un Soucy :) et oui et oui ;)

En faite je ne suis pas sur que ça vienne de WriteFile, mais en tout cas j'ai un blème...



Donc lorsque j'enregistre un Fichier, je fais comme ça :

BOOL SaveUser(LPUSER lpUser)

{

HANDLE hFile;

char Buff[1024];

DWORD lpNbrByteWritten;

LPSHORTCUT lpTemp = lpUser->lpFirst;



hFile = CreateFile(TEXT(lpUser->lpName),


GENERIC_WRITE,


FILE_SHARE_WRITE,


NULL,



CREATE_ALWAYS,


FILE_ATTRIBUTE_NORMAL,


NULL);



if(hFile == INVALID_HANDLE_VALUE)

return FALSE;



while(lpTemp)

{

wsprintf(Buff, "%s;%s;", lpTemp->lpName, lpTemp->lpShortPath);

WriteFile(hFile, (LPCVOID)Buff, sizeof(Buff), &lpNbrByteWritten, NULL);

lpTemp = lpTemp->pNext;

}



CloseHandle(hFile);

return TRUE;

}

Donc tant que l'utilisateur en cours possède encore un
Raccourci(lpTemp) il écrit dans le fichier les caractéristiques du
raccourci en cour



Mais lorsque que j'essai de Lire le Fichier, je n'ai pas tout ce que j'ai sauvegardé

Le problème c'est surtout qu'il sauvegarde en binaire, donc j'ai pas l'occasion de vérifier :s



Et donc voilà comment je lis le fichier :o

BOOL LoadUser(char *szName)

{

HANDLE hFile;

DWORD dwByteToRead;

DWORD dwByteRead;

char *Buff;



hFile = CreateFile( szName,

GENERIC_READ,



FILE_SHARE_READ,

NULL,

OPEN_EXISTING,

0,

0);



if(hFile == INVALID_HANDLE_VALUE)

return FALSE;



dwByteToRead = GetFileSize(hFile, NULL);



Buff = new char[dwByteToRead+1];

if(!ReadFile(hFile, Buff, dwByteToRead, &dwByteRead, NULL))

return FALSE;



CloseHandle(hFile);

MessageBox(NULL, Buff, NULL, 0x20);

delete[] Buff;

return TRUE;

}



Je pense que vous n'avez rien compris lol donc si c'est le cas, dite le moi, j'uploaderais le tout sur mon site ;)



Enfin avant de vous laisser j'vais quand même vous souhaitez une bonne soirée hein ;)
void Aurevoir( void ); //Bonne journée

12 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2005 à 22:15
pourquoi tu 'write' sizeof(Buf) ???

ciao...
BruNews, MVP VC++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
16 août 2005 à 22:19
Bon c'est bon lol

Ce que je chercher à faire, j'viens de réussir :)



while(lpTemp)

{

strcat(Buff, lpTemp->lpName);

strcat(Buff, ";");

strcat(Buff, lpTemp->lpShortPath);

strcat(Buff, ";");

lpTemp = lpTemp->pNext;

}

WriteFile(hFile, &Buff, sizeof(Buff), &lpNbrByteWritten, NULL);



Comme ça je suis sur que buff, contient ce qu'il faut ;)

void Aurevoir( void ); //Bonne journée
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
16 août 2005 à 22:20
Bé le troisieme param, c'est pas le nombre de Byte à écrire ???

En passant justement,

Byte, c'est octet ? ou bit ?

Parce que c'est ambigue...

void Aurevoir( void ); //Bonne journée
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2005 à 22:26
jamais BIT mais BYTE, octet.
Pourquoi ne pas écrire seulement ce qui est réellement écrit dans Buf au lieu de Buf entier ?

ciao...
BruNews, MVP VC++
0

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

Posez votre question
whikie Messages postés 99 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 17 septembre 2005
16 août 2005 à 22:29
Bonsoir,

Trouvez a cette adresse : http://www.netbenefit.fr/support_glossary.html


<DD>
<DT>Bit
<DD>
(Binary DigIT) -- C'est l'unité binaire de quantité d'information qui peut représenter deux valeurs distinctes : 0 ou 1. Un champ de 8 bits constituant ce qu'on appelle 1 byte ou 1 octet.


Voir aussi: Bandwidth, Bps, Byte, Kilobyte, Megabyte


<DT>Bit
<DD>
Bonne chance
</DD>
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
16 août 2005 à 22:31
Ahhh, donc strlen(Buff)

C'est vrai que sizeof(Buff) va me sortir 1024*sizeof(char) oui

J'pensais que ça s'arrêter avec le zéro terminal mais non j'y avais jamais pensé :p

Merci bien Mr j'vais réessayer l'ancienne version pour voir :p

void Aurevoir( void ); //Bonne journée
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
16 août 2005 à 22:35
Ouaip je savais mais c'est parce qu'en anglais Byte c'est un octet

et en français Byte c'est assez proche de bit donc voila

Tout ces mots qui parle de l'anatomie, ça me déranger un peu lol

void Aurevoir( void ); //Bonne journée
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
16 août 2005 à 22:38
C'est bien connu, le Byte en france mesure 3.78 octets.... alors que partout ailleurs c'est 8 bits !

Cordialement,
Xterminhate.
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
16 août 2005 à 22:42
Dis aussi que chez les black un byte c'est 16 tant que tu y es mdr
void Aurevoir( void ); //Bonne journée
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2005 à 22:43
vire ton wsprintf et utilise des pointeurs, tu auras direct la longueur pour le 3eme param sans reparcourir tout avec un strlen.

ciao...
BruNews, MVP VC++
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
16 août 2005 à 22:48
Maintenant tu comprends pourquoi certains ont un processeur 64 bits..... alors que la moyenne c'est 32.

Cordialement,
Xterminhate.
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
16 août 2005 à 22:49
Ouai et fais gaffe à l'utilisation de sizeof, autant de prevenir ce
n'est pas une fonction mais plutot un opérateur du langage (c'est
résolu statiquement, expression constante). Et ca retourne une taille
en char (comme ca t'es pas obligé de dire byte, tu peut meme dire
multiplet en francais) donc sizeof(char) vaut toujours 1.
0
Rejoignez-nous