bobbyantho
Messages postés69Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention23 avril 2009 7 déc. 2004 à 13:47
Ok, alors je vais refaire cela avec des allocation en mémoire, comme ça, plus de problème de taille.
ps : j'avais mis 80 car il me semble que le nom des valeurs et des clés est limité dans la base de registre à 80 caractères.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 6 déc. 2004 à 12:25
Petite correction, il n'y aura pas d'écrasement mémoire (vu que tu donne une taille max) mais tu risque de ne pas tout récupérer
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 6 déc. 2004 à 12:23
Dans la fonction : CRegistre::LireValeur()
faire memset(strValeur,0,sizeof(strValeur));
ne mettra à 0 que les 4 premier octets du buffer (sizeof(strValeur)=4 sur archi 32 bits car strValeur est un pointeur).
Pourquoi mettre arbitrairement une variable de la classe contenant la taille des valeurs à 80 ? Comme tu stocke des chaînes de caractères, tu peut calculer la taille avant la sauvagarde.
Cela pose un autre pb lors de la récup de valeur :
- si tu récupère une valeur de plus de 80 octets=>écrasement mémoire.
- si tu récupère une valeur de 10 octets, m_dwTailleValeur prend cette valeur et tu ne pourra pas stocker plus dans ModifierValeur par la suite.
13 déc. 2004 à 20:21
Avec ceci je pense que tout le monde sera renseigné sur l'utilisation du registre... (lol)!
13 déc. 2004 à 15:55
J'ai déjà posté une source du mm genre ! enfin, je crois que c'est le mm but !
http://www.cppfrance.com/code.aspx?ID=9370
A+
7 déc. 2004 à 13:47
ps : j'avais mis 80 car il me semble que le nom des valeurs et des clés est limité dans la base de registre à 80 caractères.
6 déc. 2004 à 12:25
6 déc. 2004 à 12:23
faire memset(strValeur,0,sizeof(strValeur));
ne mettra à 0 que les 4 premier octets du buffer (sizeof(strValeur)=4 sur archi 32 bits car strValeur est un pointeur).
Pourquoi mettre arbitrairement une variable de la classe contenant la taille des valeurs à 80 ? Comme tu stocke des chaînes de caractères, tu peut calculer la taille avant la sauvagarde.
Cela pose un autre pb lors de la récup de valeur :
- si tu récupère une valeur de plus de 80 octets=>écrasement mémoire.
- si tu récupère une valeur de 10 octets, m_dwTailleValeur prend cette valeur et tu ne pourra pas stocker plus dans ModifierValeur par la suite.