Ecrire dans la base de registre/conversion [Resolu] - C++ - Programmation
Marsh Posté le 21-05-2003 à 09:59:26
RegSetValueEx(hkey, TEXT("BACKUPIP" ), 0, dwType,
(PBYTE)&texte, 12);
la est l'erreur je pense
Marsh Posté le 21-05-2003 à 10:06:46
harf ca aurait eu du mal de fonctionner
je vais ecrire dans
Citation : My Company |
et je lis dans
Citation : MyCompany |
mais sinon maintenant j'arrive a aller relire la bonne valeur par mon programme mais manuellement si je vais voir la valeur dans la BDR y a toujours ces fameux carres. C'est normal?
Marsh Posté le 21-05-2003 à 10:08:20
RegSetValueEx(hkey, TEXT("BACKUPIP" ), 0, dwType,
(PBYTE)&texte, 12);
la est l'erreur je pense
Marsh Posté le 21-05-2003 à 10:10:27
ha ben en fait non ca va pour aller relire car si je lis directement apres avoir ecrit, c;est bon mais si je ferme le programme puis le reouvre pour aller ilre ca va pu.
chrisbk > je vais regarder a
RegSetValueEx(hkey, TEXT("BACKUPIP" ), 0, dwType,
(PBYTE)&texte, 12);
mais c'est l'exemple type de l'MSDN
Marsh Posté le 21-05-2003 à 10:10:34
effectivement viens de verifier dans la msdn, la est l'erreur
Marsh Posté le 21-05-2003 à 10:11:27
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
const BYTE* lpData,
DWORD cbData
);
toi tu passes un char ** (&texte)
je doute fort que l'exemple de la msdn utilise une variable nommee "texte" mais bon
Marsh Posté le 21-05-2003 à 10:27:37
effectivement, au debut j'avais modifie l'exemple de l'MSDN.
Maintenant ca fonctionne.
Merci beaucoup
EDIT : juste une question encore:
maintenant j'arrive a aller relire la bonne valeur par mon programme, mais manuellement si je vais voir la valeur dans la BDR y a toujours ces fameux carres. C'est normal?
Marsh Posté le 21-05-2003 à 14:16:31
j'ai de nouveau un probleme:
Mon programme est donc fait pour ecrire et lire dans la base de registre.
Si j'ecris une valeur dans ma base de registre avec le code suivant, que je ferme le programme, le reouvre et vais la relire ca fonctionne nickel
Code :
|
tandis que si je l'ecris avec le code suivant, que je ferme le pgm , le reouvre et que je vais tenter de relire la valeur, elle ne s'y trouve plus. Voici le code
Code :
|
Quelqu'un sait pourquoi? ou a une idee?
Marsh Posté le 21-05-2003 à 14:23:59
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
const BYTE* lpData,
DWORD cbData
);
BYTE* value
RegSetValueEx(hkey, TEXT("PPCLocation" ), 0, dwType,
(PBYTE)&value, 20);
ca marche ca
(et c du code degueu ton truc)
Marsh Posté le 21-05-2003 à 14:40:18
oui ca marche comme ca, a condition que j'entre ma valeur de la facon suivante :
Code :
|
Maintenant, si j'arrive a aller chercher ma valeur dans un EDIT ce sera tout bon mais pour l'instant ca ne fonctionne pas.
Marsh Posté le 21-05-2003 à 14:53:48
Comment faire pour convertir la valeur d'un edit (une chaine de char) de facon a obtenir le meme resultat que si j'avais fait
value = (PBYTE)"LUXA";
value etant un BYTE*
Marsh Posté le 21-05-2003 à 15:06:41
Chapeau pour le meli-mélo de C et C++
Marsh Posté le 21-05-2003 à 15:07:50
Tetragrammaton IHVH a écrit : Chapeau pour le meli-mélo de C et C++ |
meme pas, il ferait du C il aurait remplacé
Code :
|
par
texte2 = strdup("voila" );
mais bon hein ?
Marsh Posté le 21-05-2003 à 15:08:16
polo021 a écrit : franchement pour l'instant je m'en fous un peu |
ben ouais mais a relire c franchement infect
Marsh Posté le 21-05-2003 à 15:16:36
ReplyMarsh Posté le 21-05-2003 à 15:19:46
chrisbk a écrit : |
c'est vrai que niveau proprete du code, je suis pas trop au top mais bon ca viendra j'espere.
Pour mon probleme vous n'avez toujours pas une idee de pourquoi ca marche avec value = (PBYTE)"LUXA";
mais pas avec une valeur provenant d'un CEdit?
Marsh Posté le 21-05-2003 à 15:20:45
polo021 a écrit : |
attaque ca au debugueur, regarde si tu ressors bien qqchose de CEdit, regarde meme si tu chies pas dans la recuperation dudit CEdit
Marsh Posté le 21-05-2003 à 15:25:45
non en fait ca n'a peut etre meme rien a voir. Le probleme c'est que si j'ecrit la valeur dans la BDR et que je la relie tout de suite apres, ca fonctionne mais si je la relie avec une autre instance du programme ilne l'a trouve plus.
Donc je ne compreends plus rien.
Soit le probleme vient du fait que j'ecris dans le BDR une valeur pas tres bien convertie, soit le probleme est ailleurs mais ou?
Marsh Posté le 22-05-2003 à 13:37:43
bon voici la solution qui fonctionne a merveille
LECTURE DANS LA BDR :
Code :
|
ECRITURE DANS LA BDR
Code :
|
Code :
|
voila, merci a ceux qui m'ont aide et aux autres aussi.
Marsh Posté le 22-05-2003 à 13:41:08
Code :
|
j'en pleure de joie, il a enfin cpris que la fonction voulait un BYTE * et pas un BYTE **
Marsh Posté le 22-05-2003 à 13:49:39
chrisbk a écrit :
|
y avait aussi quelque gros problemes pour les CString mais c'est resolu aussi
Marsh Posté le 21-05-2003 à 09:47:50
Voici le probleme, j'ecris une adresse IP dans la base de registre mais quand je vais voir ce qui s'y trouve, le contenu ne correspond pas a l'adresse que je voulais ecrire
et quand je vais lire manuellement ce qu'il y a dans la BDR, je vois des carres, et si je lis pas mon programme
j'affiche la valeur lue (texte) dans un edit mais il n'affiche rien.
Quelqu'un a deja connu ce probleme ou un similaire??
Message édité par polo021 le 22-05-2003 à 13:50:11