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

WinDev Discussion :

Utilisation d'un assemblage .NET


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut Utilisation d'un assemblage .NET
    Bonjour tout le monde,

    Je dispose d'assemblages .NET contenant des classes mais qui ne contiennent pas de contructeur. Si je tente de faire une allocation, windev plante. Je ne peux donc faire d'allocation.

    Comment utiliser ce genre d'assemblage?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Freelance
    Inscrit en
    Avril 2003
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Avril 2003
    Messages : 393
    Points : 492
    Points
    492
    Par défaut
    Salut,

    Pour avoir testé pas mal d'assembly .net, il se peut en effet que Windev plante lors de l'écriture d'une ligne de code, etc... Il faut donc persévérer (voir déclarer en dynamique et allouer ensuite).
    J'ai eu pas mal de problème avec wd14, moins avec wd12 et 15.
    Puis-je savoir quel est ton assemblage .net ?
    Merci.
    Vince

    http://www.ennovsys.fr

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    J'utilise l'assemblage .NET fournit avec "Dialogic Diva API for .NET".
    Quelqu'un l'a-t-il déjà utilisé?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Je suis passé à la version 15 sous les conseils du support de Windev mais j'ai toujours un problème.

    Voici le bout de code qui pose problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PclDevinfo est un "DSAPI.LineDeviceInfo" dynamique
    PclDevinfo = allouer un "DSAPI.LineDeviceInfo()"
    A l'exécution, Windev me dit:
    La classe 'DSAPI.LineDeviceInfo()' est inconnue ou n'a pas encore été chargée.
    Alors que l'assemblage .NET contenant cette classe est bien chargé dans mon projet.

    Quelqu'un peut-il m'aider?

    De plus, mon assemblage .NET contient une classe DSAPI et d’autres classes nommées DSAPI.xxxxx
    Ce genre de nommage ne pose-t-il pas un problème ?

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    As-tu essayé sans les parenthèses ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PclDevinfo est un "DSAPI.LineDeviceInfo" dynamique
    PclDevinfo = allouer un "DSAPI.LineDeviceInfo"
    Et sans les guillemets ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PclDevinfo est un "DSAPI.LineDeviceInfo" dynamique
    PclDevinfo = allouer un DSAPI.LineDeviceInfo

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Sans les parenthèse, j'ai une erreur à la compilation
    Erreur :Mauvais paramètre pour le constructeur de la classe DSAPI.LineDeviceInfo.
    Sans guillement, que ce soit sans ou avec les parenthèses, j'ai cette erreur à la compilation
    Erreur :Le type LineDeviceInfo est inconnu.
    J'ai mis des guillements parce que dans mon assemblage .NET, il y a une classe qui s'appelle DSAPI et les autres classes s'apellent DSAPI.xxxx.
    Je met donc entre guillement pour ne pas que windev croit que LineDeviceInfo soit une méthode de DSAPI

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par therealmancool Voir le message

    J'ai mis des guillements parce que dans mon assemblage .NET, il y a une classe qui s'appelle DSAPI et les autres classes s'apellent DSAPI.xxxx.
    Je met donc entre guillement pour ne pas que windev croit que LineDeviceInfo soit une méthode de DSAPI
    Ah ben voilà... tout s'explique...

    Donc, si j'ai bien compris, la bonne réponse serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PclDevinfo est un "DSAPI.LineDeviceInfo" dynamique
    PclDevinfo = allouer un "DSAPI.LineDeviceInfo"()
    Avec des guillemets suivis des parenthèses.
    Ce qui se lit ainsi: « Pour la classe "DSAPI.LineDeviceInfo", exécuter le constructeur sans paramètre, et conserver la référence au nouvel objet dans la variable PclDevinfo.»
    _

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Avec cette dernière solution, j'ai encore un problème à la compilation
    Erreur :Mauvais paramètre pour le constructeur de la classe DSAPI.LineDeviceInfo.
    Citation Envoyé par =JBO= Voir le message
    Ce qui se lit ainsi: « Pour la classe "DSAPI.LineDeviceInfo", exécuter le constructeur sans paramètre, et conserver la référence au nouvel objet dans la variable PclDevinfo.»
    _
    Je suis d'accord aussi avec ta logique et c'est pour ça que je ne comprends pas pourquoi ça ne marche pas.

    Autre chose que je ne comprends pas, c'est que mes classes ne contiennent pas de constructeur. C'est normal?

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    As-tu des exemples même dans d'autres langages ?

    As-tu bien lu la documentation ?
    http://www.dialogic.com/support/help.../dsdotnetapi5/

    Namespace

    The namespace for the .NET wrapper is "DivaServer".
    The methods, structures, enumerations and constants are declared within a static class called "DSAPI".
    Donc si je lis bien il s'agit d'une "classe statique"...
    Je ne connais pas .NET, donc je vais faire des suppositions.

    Et là j'imagine qu'en fait une classe statique c'est comme une sorte de bibliothèque, toutes les méthodes sont accessibles directement sans avoir besoin d'instancier un objet .NET.

    Ou disons plutôt que l'objet est instancié "automatiquement" et ici il s'appelle DSAPI.
    Et dans ce cas LineDeviceInfo() serait une méthode de la classe.

    Si je vois clair , il faudrait que tu cherches comment faire référence à une classe statique .NET avec WinDev.

    Ou bien alors, utilises une autre bibliothèque, tu as l'embarras du choix.
    Ppourquoi avoir préféré .NET ?


    _

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 61
    Points : 37
    Points
    37
    Par défaut
    Moi non plus je ne suis pas expert en .NET et windev. C'est la prmière fois que j'y touche.

    Selon moi, ou plutôt selon ce que je vois dans windev, DSAPI est une classe.
    J'arrive à l'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pclPclTest est un DSAPI dynamique
    Code est un "DSAPI.ReturnCode" dynamique
     
    Code=DSAPI.Initialize()
    Info("DSAPI.Initialize="+Code:tostring())
    Le "Info" m'affiche "Success". Donc l'initialisation de DSAPI marche.

    Toujours selon ce que je vois dans windev, DSAPI.LineDeviceInfo est une classe qui, comme DSAPI, n'a pas de constructeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PclDevinfo est un "DSAPI.LineDeviceInfo" dynamique 
    PclDevinfo = allouer un "DSAPI.LineDeviceInfo()"
    Là, j'ai une erreur
    La classe 'DSAPI.LineDeviceInfo()' est inconnue ou n'a pas encore été chargée.
    Et avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PclDevinfo est un "DSAPI.LineDeviceInfo" dynamique 
    ...(initialisation)...
    Code=DSAPI.GetLineDeviceInfo(1,PclDevinfo)
    Et là aussi, j'ai une erreur
    Code erreur : 0
    Niveau : pas d'erreur (EL_NONE)
    J'utilise .NET parce que dans la boite, ils utilisent ça. Mais je suis en train de regarder avec la méthode du chargement de dll

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Je ne sais pas comment fonctionne WinDev avec un assemblage .NET et ce sont juste des réflexions "logiques".

    Si le monde est bien fait, il ne devrait pas être nécessaire de déclarer une classe statique dans ton code puisqu'elle est déjà déclarée quant tu références l'assemblage.

    Donc, DSAPI devrait être utilisable tel quel, sans nécessiter de déclaration.

    A priori, DSAPI.ReturnCode est un type énuméré.

    Ensuite, si LineDeviceInfo est vraiment une classe, il est possible que tu ne sois pas autorisé à faire appel directement au constructeur, et qu'à la place tu utilises la méthode GetLineDeviceInfo() fournie par DSAPI. Dans ce cas, c'est cette méthode qui alloue l'objet et le construit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Code est un "DSAPI.ReturnCode" dynamique
    PclDevinfo est un "DSAPI.LineDeviceInfo" dynamique 
     
    Code = DSAPI:Initialize()
    Info("DSAPI.Initialize=" + Code:tostring())
    PclDevinfo = DSAPI:GetLineDeviceInfo(.....???....)
    Mais franchement trouve des exemples et utilise un "browser" pour vérifier quelles sont les classes de l'assemblage, et quelles sont les méthodes fournies ainsi que leur utilisation.
    _

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/04/2015, 11h01
  2. [WD17] Utilisation assemblage .NET
    Par thierrybatlle dans le forum WinDev
    Réponses: 2
    Dernier message: 24/01/2012, 11h45
  3. Utilisation d'assemblages .NET
    Par dvinet17 dans le forum Windev Mobile
    Réponses: 0
    Dernier message: 07/09/2011, 16h21
  4. [WD12E] Utilisation Assemblage .NET d'ESRI
    Par hgoethe dans le forum WinDev
    Réponses: 7
    Dernier message: 07/12/2009, 11h45
  5. [D2005] Utiliser un assemblage .Net
    Par giloutho dans le forum Delphi .NET
    Réponses: 7
    Dernier message: 27/07/2005, 00h31

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