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 :

Faire un énumérateur récursif en VB.Net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut Faire un énumérateur récursif en VB.Net
    Bonjour à tous, j'aimerais avoir un peu d'aide si possible puor un projet en VB.Net.
    Je dois récupérer des fonctions dans une dll écrite en C.
    Le problème est que la fonction me renvoie un enum qui contient une string classique de C avec un pointeur sur l'énum suivant.
    et le problème est pour récupérer tout ca en VB, je n'arrive pas dans l'énum.
    c'est bien un énum récursif qu'il faut faire? si oui, qqun c'est m'éclaircir? merci

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Doomdoom
    Bonjour à tous, j'aimerais avoir un peu d'aide si possible puor un projet en VB.Net.
    Je dois récupérer des fonctions dans une dll écrite en C.
    Le problème est que la fonction me renvoie un enum qui contient une string classique de C avec un pointeur sur l'énum suivant.
    et le problème est pour récupérer tout ca en VB, je n'arrive pas dans l'énum.
    c'est bien un énum récursif qu'il faut faire? si oui, qqun c'est m'éclaircir? merci
    Je ne vois pas vraiment de solution à ton problème.(sous reserve de description plus claire ... car c'est un peu obscur : un enum avec pointeur, je ne vois pas ce que c'est).

    Le mieux et le plus simple, je pense, est que tu écrives un "wrapper" en C++, présentant les retours sous une forme plus ".net friendly".

    En dehors de cela, la notion d'Enumerator en .Net n'a pas de rapport de près ou de loin avec un enum en C.

    Poste au moins la signature de ta fonction C, ce sera plus limpide, par ce que là ......

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut
    Ceci est la définition dans le sdk (pdf)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Name: NCMRetCode NCM_GetAllDevices(pncmFamily, ppncmDeviceModel)
    Inputs: NCMFamily *pncmFamily • pointer to a data structure containing a family name
    NCMDevice **ppncmDeviceModel • address of pointer where installable device model names
    will be output
    Returns: NCM_SUCCESS if success
    NCM error code if failure
    Includes: NCMApi.h
    Category: Read configuration
    Mode: synchronous

    NCMRetCode est un integer(c'est un enum simple)
    NCMFamily et NCMDevice

    ceci est dans l'include livré avec le sdk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct NCMString
    {
    	char              *name;
        struct NCMString  *next;
    } NCMString; 
     
    typedef NCMString NCMFamily, NCMDevice, NCMProperty, NCMVariable, 
    		NCMValue, NCMErrorMsg;

    Ceci est la signature dans l'include livré avec le sdk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NCM_API NCMRetCode      NCM_GetAllDevices( NCMFamily *, NCMDevice ** );

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    OK.

    Sur ce genre de truc, je pense que le plus simple est que tu fasses un wrapper en C++ avec une fonction qui va appeler la fonction C et balayer au retour la structure chainée pour mettre le tout dans un tableau. Puis appeler cette fonction wrapper depuis ton code VB.

    Je ne suis même pas sur que c'est faisable autrement, et, si ce l'est, ça va être sacrément bordelique (car tu devra gérer un pointeur sur pointeur dans lequel sera stocké les données en retour, plus le balayage de liste par pointeur : VB.Net est pas vraiment prévu pour ce genre d'exercice )

    Au fait, ce type de structure s'apelle une liste chainée, pas un énumérateur.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut
    Merci pour cet éclairage! je vais tenter cette méthode

Discussions similaires

  1. Comment faire un JOIN récursif d'une table sur elle-même?
    Par PierreCaron dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/04/2009, 03h28
  2. faire un navigateur web en VB.net
    Par damaskinos dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/08/2007, 21h12
  3. peux je faire une interface java comme vb.net
    Par mini-Informaticien dans le forum 2D
    Réponses: 2
    Dernier message: 05/05/2007, 00h40
  4. faire un clean sous visual c# .NET?
    Par zarathoustroy dans le forum Visual Studio
    Réponses: 2
    Dernier message: 04/01/2007, 16h15
  5. Réponses: 19
    Dernier message: 28/01/2005, 09h52

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