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.NET Discussion :

Récupération dans le registre d'un type Vector3 [Débutant]


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut Récupération dans le registre d'un type Vector3
    Bonjour,

    Je n'arrive pas à récupérer une valeur du registre de type Vector3.

    J'effectue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Key.SetValue("Quaternion", Quat.Value) '' Sauvegarde de la valeur dans le registre
    Quat.Value. = Key.GetValue("Quaternion") '' Recupérer la valeur
    Il me mets un problème : " le cast spécifié n'est pas valide vb.net "

    J'ai regardé un peu sur le forum, j'ai vu qu'il fallait utiliser CType.

    J'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Quat.Value. = CType(Key.GetValue("Quaternion"),Vector3)
    Mais cela ne fonctionne pas.

    Une idée ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    je ferais un truc du genre :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim monObj as Object = Key.GetValue("Quaternion")

  3. #3
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    je ferais un truc du genre :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim monObj as Object = Key.GetValue("Quaternion")
    Merci de ta réponse Romulus mais " le cast spécifié n'est pas valide vb.net "
    Pourtant j'ai essayé de rajouté aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim Quaternion As Object = Key.GetValue("Quaternion")
                    Dim Quaternion1 As Vector3 = Quaternion
                    Quat.Value = Quaternion1
    Quelqu'un aurais une autre solution ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim monObj as Object = Key.GetValue("Quaternion")

    Met un point d'arrêt et regarde comment la valeur récupérée est construite.
    Comme je ne connais pas ta classe Vector3, je ferais un truc dans ce style là:
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim monVec3 as New Vector3(monObj.x, monObj.y, monObj.z)

    Au lieu de faire une affectation directe, pourrais tu construire manuellement un objet de cette classe?

  5. #5
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Merci de cette réponse Romulus, je vais voir ce que je peux faire.

    En attendant, voici la classe vector3 que tu m'as demandé :

    http://developercenter.robotstudio.c...dad08db7f9.htm

    et le contrôle à qui je souhaite ajouter cette valeur :

    http://developercenter.robotstudio.c...7faf5b1f59.htm

    Met un point d'arrêt et regarde comment la valeur récupérée est construite
    Voici ce que j'obtiens comme valeur de la part du registre :
    Nom : vector3.PNG
Affichages : 121
Taille : 8,0 Ko

  6. #6
    Invité
    Invité(e)
    Par défaut
    En mode débogage, tu as une fenêtre espion qui s'ouvre normalement. Ainsi, si tu peux ajouter l'objet monObj dans la liste des espions, et tu peux ainsi voir ses propriétés et valeurs obtenues.
    Après, si tu essayes
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim monVec3 as Vector3 = New Vector3(monObj)
    tu as quoi?
    Dernière modification par Invité ; 27/11/2014 à 14h37.

  7. #7
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    En mode débogage, tu as une fenêtre espion qui s'ouvre normalement. Ainsi, si tu peux ajouter l'objet monObj dans la liste des espions, et tu peux ainsi voir ses propriétés et valeurs obtenues.
    Après, si tu essayes
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim monVec3 as Vector3 = New Vector3(monObj)
    tu as quoi?
    Impossible d'utiliser ce code ça me mets cette erreur :

    La résolution de surcharge a échoué, car aucun 'New' accessible ne peut être appelé sans conversion restrictive*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        'Public Sub New(axis As ABB.Robotics.Math.Axis)'*: L'argument qui correspond au paramètre 'axis' passe de 'Object' à 'ABB.Robotics.Math.Axis'.
        'Public Sub New(vec As ABB.Robotics.Math.Vector4)'*: L'argument qui correspond au paramètre 'vec' passe de 'Object' à 'ABB.Robotics.Math.Vector4'.
        'Public Sub New(vec() As Double)'*: L'argument qui correspond au paramètre 'vec' passe de 'Object' à 'Tableau à 1 dimension(s) de Double'
    Merci de prendre le temps de m'aider Romulus, c'est super sympa !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    dim monObj as Object = Key.GetValue("Quaternion")
    après cette affectation effectuée, regarde ce que tu obtiens dans la liste des espions. Dans la colonne valeur, il te met quoi? Normalement, tu as marqué son nouveau type.

  9. #9
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Voici ce que j'obtiens:

    monobj Nothing Object

    J'ai regardé dans mon registre il existe bien une valeur pour Quaternion lorsque j'y accède avec Regedit.

    Bizarre !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Rien a été récupéré? Sinon, j'aurais une solution, j'espère ne pas trop casser dans ton projet. Selon moi, le type Vector3 n'est pas un type reconnue dans la base de registre. Ce que je te conseille de faire, c'est une sérialisation / désérialisation binaire.

  11. #11
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    La méthode de la sérialisation m'a l'air vraiment compliqué et je n'aurais guère le temps de la développer. Je te pris de m'excuser Romulus !

    En continuant à chercher, je suis tomber sur ce paramètre : http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx

    N'y aurais t'il pas possibilité d'utiliser ceci ?

    J'ai essayé quelques trucs mais ça n'a pas l'air de fonctionner.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Pour moi, tu ne peux utiliser la base de registre pour enregistrer des types avancés, comme Vector3, ça reste à confirmer par contre.

    justement non, ça ne tient pas à grand chose, ça se présente ainsi :

    Code vb : 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
    28
    29
    30
    31
    32
    33
     
    'Etape 1 : définir la classe à sérialiser
    <Serializable()> 
    Public Class Vector3Serialisable
    Private _monVec as Vector3
     
    Public Sub New()
    _monVec=Nothing
     
    Public Property DefVect
    get
    return _monVec
    end Get
    Set(value)
    _monVec=value
    End Set
    End Property
    End Class
     
    'Etape 2: la sérialisation
    dim monVec as Vector3
    'ici, tu lui affectes tes valeurs mais pas via la lecture dans la base des registres
    dim FluxDeFichier as FileStream = File.create("vect.bin")
    Dim Serialiseur as New BinaryFormatter
    Serialiseur.Serialize(FluxDeFichier, monVec )
    FluxDeFichier.close
     
    'Etape 3 : la désérialisation
    dim monVec as Vector3
    dim FluxDeFichier as Stream = File.openRead("vect.bin")
    Dim Deserialiseur as New BinaryFormatter
    monVec = CType(Deserialiseur.Deserialize(FluxDeFichier), Vector3Serialisable)
    FluxDeFichier.Close()

  13. #13
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Merci Romulus pour toute ton aide, j'utilise dorénavant ta méthode qui fonctionne !

  14. #14
    Invité
    Invité(e)
    Par défaut
    Là, je t'ai montré la sérialisation binaire car son point fort, c'est que cela fonctionne sur des types avancés, comme Vector3, hashtable, .... chose qui n'est pas le cas pour la sérialisation XML, bien que le code reste quasi-identique.
    Après, tu peux également ouvrir une pop-up afin de permettre à l'utilisateur de pouvoir justement ouvrir ou enregistrer son fichier binaire là où il veut, avec le nom qu'il désire:
    - Pour l'ouverture, utiliser un objet de type OpenFileDialog
    - Pour enregistrer, utiliser un objet de type SaveFileDialog

  15. #15
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Après, tu peux également ouvrir une pop-up afin de permettre à l'utilisateur de pouvoir justement ouvrir ou enregistrer son fichier binaire là où il veut, avec le nom qu'il désire:
    - Pour l'ouverture, utiliser un objet de type OpenFileDialog
    - Pour enregistrer, utiliser un objet de type SaveFileDialog
    Je me sers déjà de ces contrôles Romulus.

    L'utilisateur ne doit rien avoir à saisir, c'est un peu compliqué comme projet à expliquer.

    Mais ton aide m'a suffit, merci !

  16. #16
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 96
    Points : 166
    Points
    166
    Par défaut
    Bonjour à tous,

    J'ai trouvé la solution à mon problème si des gens ont le même soucis que moi je partage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Dim RobPosKey As New Vector3(KeyRobTarget.GetValue("PositionX"), KeyRobTarget.GetValue("PositionY"), KeyRobTarget.GetValue("PositionZ"))
                        RobPos.Value = RobPosKey
                        Dim RobQuatKey As New Vector3(KeyRobTarget.GetValue("QuaternionX"), KeyRobTarget.GetValue("QuaternionY"), KeyRobTarget.GetValue("QuaternionZ"))
                        RobPos.Value = RobPosKey
                        Rob_Quat.Value = RobQuatKey
    Cordialement,

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/09/2005, 21h15
  2. Réponses: 2
    Dernier message: 01/06/2005, 14h28
  3. [date][javascript][sql] récupération dans un formulaire
    Par Shaud7 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/12/2004, 15h45
  4. Réponses: 4
    Dernier message: 11/06/2004, 16h27
  5. Lire une valeur dans le registre
    Par John.s dans le forum C
    Réponses: 2
    Dernier message: 26/11/2003, 19h55

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