IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6]ecrire une chaine de byte dans la base de registre [Infos]


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de tomnie
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 71
    Points
    71
    Par défaut [VB6]ecrire une chaine de byte dans la base de registre
    voila je sais ecrire un bit dasn la base de registre, un dword ...etc
    maintenant je souhaite ecrire une chaine de caractere en byte dans la base de registre.
    pour cela je transforme ma chaine de caractere en tableau de byte.
    Mais ensuite comment ecrire ce tableau dans une seul valeur dans la base de registre???
    J'ai essayé un join mais cela ne marche pas.
    Pour info j'utilise les api pour acceder à la base de registre.

    Merci.

  2. #2
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Pourquoi transformes-tu ta chaine de caractères en tableau d'octets :
    Ecrit directement ta chaine dans une valeur Chaine du registre.

  3. #3
    Membre régulier Avatar de tomnie
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 71
    Points
    71
    Par défaut
    ok l'exemple de la chaine de caractere est pas le meilleur possible ...
    bon si je veux ecrire un numero dasn la base de registre en forme binaire chiffre par chiffre, du genre un code de carte bleu ou un truc un peu sensible pour ne pas qu'on puisse le comprendre en lisant la base de registre....
    en fait je veux juste pouvoir ecrire une liste d'octet provenent d'un tableau de byte, si cela est possible...

  4. #4
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Alors utilise une valeur de type binaire.
    Si tu as un bout de code....

  5. #5
    Membre régulier Avatar de tomnie
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 71
    Points
    71
    Par défaut
    HPJ :
    Alors utilise une valeur de type binaire.
    c'est deja ce que j'utilise...

    voici le bout qui sert à ecrire les données en binaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    donnee as string
     
    If style = REG_BINARY Then
        Dim vr() As Byte
        ReDim vr(1 To Len(Donnee))
        For i = 1 To Len(Donnee)
            vr(i) = CByte(Asc(Mid(Donnee, i, 1)))
        Next
        RegSetValueEx lng, valeur, 0&, style, join(vr,""), Len(Donnee)
    j'ai aussi essyé vr seul en parametre amis cela ne marche pas ...

  6. #6
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Le plus simple est de convertir ton tableau d'octets en une chaine de caractères en représentant chaque octet par 2 caractères correpondant à sa valeur hexadécimale.

  7. #7
    Membre régulier Avatar de tomnie
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 71
    Points
    71
    Par défaut
    heu ....
    oui je pense que je suis d'accord mais pourrais tu me donner un exemple car je crois ne pas avoir tout compris ...

  8. #8
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function Tab2String(tableau() As Byte) As String
     
        Dim i As Long
        Dim s As String
     
        For i = LBound(tableau) To UBound(tableau)
            s = s & Format(Hex(tableau(i)), "00")
        Next i
     
        Tab2String = s
     
    End Function
    Sinon avec tu peux te servir de çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Public Const REG_BINARY = 3                     ' Binary
     
    Public Function getBinary(Hkey As Long, strPath As String, strValue As String) As Byte()
    Dim keyhand As Long
    Dim datatype As Long
    Dim lResult As Long
    Dim strBuf() As Byte
    Dim lDataBufSize As Long
    Dim i As Long
    r = RegOpenKey(Hkey, strPath, keyhand)
    lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
    If lValueType = REG_BINARY Then
        ReDim strBuf(1 To lDataBufSize) As Byte
        lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, strBuf(1), lDataBufSize)
        If lResult = ERROR_SUCCESS Then
            getBinary = strBuf
        End If
    End If
    End Function
     
    Public Sub SaveBinary(Hkey As Long, strPath As String, strValue As String, binaryData() As Byte)
    Dim keyhand As Long
    Dim r As Long
    r = RegCreateKey(Hkey, strPath, keyhand)
    r = RegSetValueEx(keyhand, strValue, 0, REG_BINARY, binaryData(LBound(binaryData)), UBound(binaryData) - LBound(binaryData) + 1)
    r = RegCloseKey(keyhand)
    End Sub

  9. #9
    Membre régulier Avatar de tomnie
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 71
    Points
    71
    Par défaut
    ok merci beaucoup !!!
    juste une derniere precision :
    pourquoi doit on transformer le tableau de byte en string et placer les valeurs sur 2 octets ???

  10. #10
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Soit tu converties ton tableau d'octets en chaîne de caractères puis tu l'ajoutes dans une valeur REG_SZ
    Soit tu utilises le second code que je t'ai donné pour ajouter directement ton tableau dans une valeur REG_BINARY.

  11. #11
    Membre régulier Avatar de tomnie
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 71
    Points
    71
    Par défaut
    ok.
    Merci beaucoup !

  12. #12
    Membre régulier Avatar de tomnie
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 71
    Points
    71
    Par défaut
    C'était pour dire que la deuxième solution marchait très bien.

    Merci encore HPJ de ton aide...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 43
    Points
    43
    Par défaut help
    Salut,

    J'exume ce post car je galere avec ce reg_binary. J'ai bien essayé les differentes solutions mais ca ne marche toujours pas. En fait je voudrais ecrire des valeurs "textes" que j'ai recupéré d'un .reg dans une clé reg_binary

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] enregistrer une chaine de caractére dans la base de donnée
    Par leaderchips dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/04/2010, 20h35
  2. [vb6] placer une chaine de caractere dans une autre chaine
    Par bailamos dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/08/2009, 12h49
  3. Réponses: 5
    Dernier message: 21/04/2009, 01h29
  4. Ecrire une chaine de caractère dans un fichier excel
    Par Wassim123 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/05/2008, 10h42
  5. Réponses: 4
    Dernier message: 02/11/2005, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo