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

Windows Forms Discussion :

[VB.NET] Problem de récupération de variable avec une DLL


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 117
    Points : 80
    Points
    80
    Par défaut [VB.NET] Problem de récupération de variable avec une DLL
    bonjour voila j'ai une fonction dans ma dll qui doit me retourner, en autres, une chaine de caractere répresentant la date.
    j'ai declaré dans mon code vb net la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function fnVerifyLicenceEx Lib "MdCompEnreg" (ByVal clsid As String, ByVal lic As String, ByRef imachine As Integer, ByRef ibm As Integer, Byref Pdate As String As Integer
    Mais lors de l'execution il y a une erreur voila le message d'erreur :


    Une exception non gérée du type 'System.NullReferenceException' s'est produite dans MdManager.exe

    Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet
    .

    Or en mettant le parametre pdate en byval la date n'est pas retourné mais il n'y a plus d'erreur : or ca devrai me retourner obligatoiremenr quelque chose
    il y aurait t il autre chose que byval ou byref ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Points : 50
    Points
    50
    Par défaut
    Et si tes autres paramètres ByRef, imachine et ibm, il te les retourne bien?

  3. #3
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    De memoire il faut utiliser StringBuilder pour les retours dans des String

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Function fnVerifyLicenceEx Lib "MdCompEnreg" (ByVal clsid As String, ByVal lic As String, ByRef imachine As Integer, ByRef ibm As Integer, Byval Pdate As System.Text.StringBuilder) As Integer 
     
    Dim s as new System.Text.StringBuilder(100) 'J'ai mis 100 mais met ce qui te convient. C'est la taille du buffer
    Dim i as Integer = fnVerifyLicenceEx("clsid", "lic", imachine, ibm, s)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 117
    Points : 80
    Points
    80
    Par défaut
    ok merci je vais essayer ca de suite

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 117
    Points : 80
    Points
    80
    Par défaut
    Et bien ca ne fonctionne toujours pas mieu
    voici l'erreur :

    Une exception non gérée du type 'System.NullReferenceException' s'est produite dans MdManager.exe

    Informations supplémentaires*: La référence d'objet n'est pas définie à une instance d'un objet.

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    fais voir le code de l'appel
    es tu sur que ça vient de cette fonction ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 117
    Points : 80
    Points
    80
    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
    13
    14
      Private Declare Function fnVerifyLicenceEx Lib "MdCompEnreg" (ByVal clsid As String, ByVal lic As String, ByRef imachine As Integer, ByRef ibm As Integer, ByRef Pdate As System.Text.StringBuilder) As Integer
     
            Dim Licence As String
            Dim CLSID As String
            Dim iMachine, lPerm As Integer
            Dim pDate As System.Text.StringBuilder
            '****essai********
            Dim s As New System.Text.StringBuilder(100)
     
     
     
            Licence = TextBox1.Text
            CLSID = TextBox2.Text
            verif = fnVerifyLicenceEx(CLSID, Licence, iMachine, lPerm, s)
    Lorsque je met un point d'arret sur cette fonction s renvoit "nothing" alors que les autres variables renvoient bien quelques choses

  8. #8
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    pDate est nothing normal car c'est s que tu utilise au lieu de pDate.
    Que vaut s ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 117
    Points : 80
    Points
    80
    Par défaut
    nothing en fait c'etait s qui retournai nothing

  10. #10
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Dans ton instruction declare ..
    Le paramètre pDate doit être passé byVal (comme je l'ai écrit plus haut)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function fnVerifyLicenceEx Lib "MdCompEnreg" (ByVal clsid As String, ByVal lic As String, ByRef imachine As Integer, ByRef ibm As Integer, Byval Pdate As System.Text.StringBuilder) As Integer

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 117
    Points : 80
    Points
    80
    Par défaut
    oh oui quel etourdit!
    Maintenant ca marche trop fort! merci beaucoup

  12. #12
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    oublie pas le bouton resolu (en bas à gauche) ;-)

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

Discussions similaires

  1. probleme de récupération de variable en bash avec awk
    Par avogadro dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/12/2006, 01h31
  2. [VB.net] Probleme avec une dll pour l'enregistrer
    Par Diablo_22 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/08/2006, 20h41
  3. Réponses: 6
    Dernier message: 07/07/2006, 17h27
  4. Probleme de récupération de variable
    Par mathieu77186 dans le forum Langage
    Réponses: 3
    Dernier message: 05/06/2006, 14h42
  5. Probleme de passage de variable avec unlink()
    Par Zocrom dans le forum Langage
    Réponses: 10
    Dernier message: 02/02/2006, 23h59

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