Bdr et valeur binaire "multi-ligne"

Résolu
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010 - 20 sept. 2005 à 19:39
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 - 20 sept. 2005 à 23:45
Salut a tous,

Voila j'essai de lire une valeur binaire dans la base de registre,de la stockee en string pour la reecrire apres.
Mon probleme est que je ne parviens pas a redonner la meme valeur :(

Voici mon code (sans les declarations):
'Pour ecrire la valeur
Public Sub SetBinaryValue(Racin As Racine, cle As String, NomValeur As String, Valeur() As Long)
On Error GoTo er
Dim i As Long
Dim bi As Long
For i = 0 To UBound(Valeur) - 1
bi = bi + Len(Valeur(i))
Next i
Dim Pointeur As Long 'pointe sur la clé
Dim Resultat As Long 'résultat
Resultat = RegCreateKeyEx(Racin, cle, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESSb, 0&, Pointeur, Resultat)
Resultat = RegSetValueExLong(Pointeur, NomValeur, 0&, REG_BINARY, Valeur(0), bi)
Resultat = RegCloseKey(Pointeur)
er:
If Err.Description <> "" Then MsgBox Err.Description
End Sub

'Pour la lire
Function GetBinaryValue(ByVal hKey As Long, ByVal KeyName As String, _
ByVal ValueName As String) As Variant
Dim handle As Long
Dim resLong As Long
Dim resString As String
Dim resBinary() As Byte
Dim length As Long
Dim retVal As Long
Dim valueType As Long
Dim tmp As String
If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle) Then
Exit Function
End If
length = 1024
ReDim resBinary(0 To length - 1) As Byte
retVal = RegQueryValueEx(handle, ValueName, 0, valueType, resBinary(0), _
length)
If retVal = ERROR_MORE_DATA Then
ReDim resBinary(0 To length - 1) As Byte
retVal = RegQueryValueEx(handle, ValueName, 0, valueType, resBinary(0), _
length)
End If

Select Case valueType
Case REG_BINARY
If length <> UBound(resBinary) + 1 Then
ReDim Preserve resBinary(0 To length - 1) As Byte
End If
Dim i As Long
For i = 0 To UBound(resBinary) '- 1
tmp = tmp & CStr(resBinary(i)) & "|"
Next i
GetBinaryValue = tmp
Case Else
RegCloseKey handle
End Select
RegCloseKey handle
End Function

pour la cle HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main","Window Placement" par exemple il me renvoi:
("44|0|0|0|0|0|0|0|1|0|0|0|0|131|255|255|0|131|255|255|255|255|255|255|255|255|255|255|0|0|0|0|0|0|0|0|0|4|0|0|226|2|0|0|", "|")
'mais si je split ca et que je veux le reecrire et bin non il veut po me mettre la meme valeur :(
exemple:
Private Sub Command2_Click()
Dim rets() As Long
Dim ss() As String
Dim i As Long
ss = Split("44|0|0|0|0|0|0|0|1|0|0|0|0|131|255|255|0|131|255|255|255|255|255|255|255|255|255|255|0|0|0|0|0|0|0|0|0|4|0|0|226|2|0|0|", "|")
ReDim rets(0 To UBound(ss) - 1)
For i = 0 To UBound(ss) - 1
rets(i) = CLng(ss(i))
Next i
Call SetBinaryValue(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main", "ESSAI", rets())
End Sub


Bon j'admets que c'est pas tres clair mon explication, mais je vois pas comment mieux expliquer..
Merci d'avance @+

13 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 sept. 2005 à 23:02
Tu peux étendre tes recherches sur www.pscode.com on sait jamais !
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 sept. 2005 à 21:55
essais d'inverser le contenu de ton tableau à écrire.
Commence par écrire la dernière case et ainsi de suite jusqu'à la première case de ton tableau
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
20 sept. 2005 à 21:59
Salut Willi,

Merci pour ta reponse, mais le quel tableau veux tu que j'inverse ?
Et pourquoi pense tu qu'il faudrait l'inverser ?

Merci d'avance @+
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 sept. 2005 à 22:05
j'ai eu le meme problème que toi lorsque j'avais besoin d'écrire une valeur binaire.

comme toi mes valeurs était dans un tableau de byte
et j'ai galérer pas mal de temps avant de trouver une solution sur google
inverse les cases du tableau de byte que tu dois envoyer à la ta fonction SetBinaryValue !

Je ne sais pas comment tu as écrites ta fonction SetBinaryValue alors je ne sais pas si sa va passer mais essais !
0

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

Posez votre question
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
20 sept. 2005 à 22:13
Re,

En fait la valeur a l'air a l'endroit elle commence bien par les memes valeurs mais elle est bcp plus longue..

mais viens d'essayer quad meme et ca donne exactement la meme chose bizare ~

J'ai pus constate que je me rapprochait de la bonne valeur en virant les 0 (zero) de la chaine mais je vois pas quoi d'autre modifier :(

Encore merci @+
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 sept. 2005 à 22:24
tu peux me donner la valeur binaire que tu dois écrire stp ?
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
20 sept. 2005 à 22:30
En fait je nai pas une valeur a ecrire mais mon programme se doit de gerer ce type de valeurs...

Exemple de valeur:
http://www.keohosting.net/system/images/Reg-Binary.bmp
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 sept. 2005 à 22:38
En effet c'est pas des plus simple...
Si j'ai quelque chose je te tiens au courant !
Bon courage
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
20 sept. 2005 à 22:50
Ok merci beaucoup :)

@+
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
20 sept. 2005 à 23:21
Re,

J'ai en effet trouve un code qui gere ce genre de cle sur www.pscode.com,
merci mille fois pour ton devouement :)

En esperant pouvoir te renvoyer la balle @+
et bonne prog ;)
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 sept. 2005 à 23:27
Dis moi peux tu me donner le lien de la source que tu viens de trouver svp sa peut servir à toute le monde je pense !

Bonne prog :)
++
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
20 sept. 2005 à 23:34
Yep bien sur ;)
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=57232&lngWId=1

Mais je prepare une class un peu plus complete(in french) que je deposerai bientot sur le site...

Encore merci @+
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 sept. 2005 à 23:45
OK je te remerci bon courage @+
0
Rejoignez-nous