none
Notion de Pointeur en C# RRS feed

  • Question

  • Bonjour j'ai des petits soucis avec l'utilisation des pointeurs, j'ai une fonction en c++ que je dois traduire en C" mais je ne sais pas comment faire avec les pointeurs voici cette fonction:
    en c++:  unsigned short SGD_ReserverSession ( size_t Taille, unsigned short* NumeroSession);
    je l'ai traduite comme ceci en c#
     public static ushort SGD_ReserverSession( ulong Taille, ref ushort NumeroSession);
    j'ai testé avec les mots clé "ref" et "out" mais je n'ai aucun resultat dans la variable NumeroSession en retour.
    Merci pour votre collaboration.
    jeudi 9 août 2007 12:07

Réponses

  • La ce n'est plus un problème au niveau de C#... Mais de cette fonction...

     

    Avez vous essayé d'appeller cette fonction via une console par exemple ? Via un programme C++ ?

    Avez-vous les sources de cette DLL ? Est-ce une assembly .NET ?

    La documentation de cette fonction ne vous donne pas plus de détail ?

     

    Cordialement

     

    vendredi 10 août 2007 17:59
    Modérateur

Toutes les réponses

  • Ta traduction est correcte...

     

    Peux-tu montrer le code de ta méthode ? Ou au moins la ligne où tu affectes ta variable NumeroSession...

     

    Cordialement

    jeudi 9 août 2007 14:54
    Modérateur
  • J'ai déjà eu un problème similaire. Es-ce que tu as définit ta variable NumeroSession dans la même fonction qui appèle SGD_ReserverSession? Et es-ce que tu as mis le mot-clé out à NumeroSession?

     

    jeudi 9 août 2007 17:36
    Modérateur
  • //l'appel de la dll correspondant à la  fonction dans l'API (c'est l'api sesam vitale)

    [DllImport("sgdw32.dll")]
     public static extern ushort SGD_ReserverSession( ulong Taille, ref ushort NumeroSession);

    et lors de l'appel je fais ceci car il ya des codes retours générés
    protected void Page_Load(object sender, EventArgs e)
       {
     ushort numerosession;
     ushort coderetour;
     coderetour=SGD_ReserverSession(taille,ref numerosession);
    TextBox1.Text=coderetour + "";

    }
    NB:Il est question ici de faire passer le paramètre numerosession par adresse car la fonction doit attribuer une valeur à ce paramètre pour initialiser la session.j'ai testé avec les mots clés ref et out mais j'ai toujours un code retour différent de 0.
    et pourtant tout est bien initialisé et le coderetour doit être = 0.

    Cordialement,
    Destthy.
    jeudi 9 août 2007 19:22
  • //l'appel de la dll correspondant à la  fonction dans l'API (c'est l'api sesam vitale)

    [DllImport("sgdw32.dll")]
     public static extern ushort SGD_ReserverSession( ulong Taille, ref ushort NumeroSession);

    et lors de l'appel je fais ceci car il ya des codes retours générés
    protected void Page_Load(object sender, EventArgs e)
       {
     ushort numerosession;
     ushort coderetour;
     coderetour=SGD_ReserverSession(taille,ref numerosession);
    TextBox1.Text=coderetour + "";

    }
    NB:Il est question ici de faire passer le paramètre numerosession par adresse car la fonction doit attribuer une valeur à ce paramètre pour initialiser la session.j'ai testé avec les mots clés ref et out mais j'ai toujours un code retour différent de 0.
    et pourtant tout est bien initialisé et le coderetour doit être = 0.

    Cordialement,
    Destthy.
    jeudi 9 août 2007 19:23
  • Si vous n'avez pas de levée d'exception c'est que l'appel à votre dll fonctionne très bien...

     

    A quoi correspond le paramètre taille dans cette fonction ?

     

    Avez-vous des informations concernant le code de retour de cette DLL ?

     

    Cordialement

    vendredi 10 août 2007 14:25
    Modérateur
  • voila ce que je fais:

    [DllImport("sgdw32.dll")]

     public static extern ushort SGD_ReserverSession( ulong Taille, out ushort NumeroSession);

    et lors de l'appel je fais ceci car il ya des codes retours générés
    protected void Page_Load(object sender, EventArgs e)
       {
      ulong taille=4000 //c'est la taille allouée à la zone mémoire à reservé pour la session
     ushort numerosession;

     ushort coderetour;
     coderetour=SGD_ReserverSession(taille,out numerosession);
    TextBox1.Text=coderetour + "";

    }
    Resultat: Code retour=63495 qui signifie:
    fonctions de constitution : zone de mémoire non réservée
    je ne sais vraiment plus quoi faire !
    Merci pour ta réponse.

    Cordialement,
    Destthy
    vendredi 10 août 2007 17:19
  • La ce n'est plus un problème au niveau de C#... Mais de cette fonction...

     

    Avez vous essayé d'appeller cette fonction via une console par exemple ? Via un programme C++ ?

    Avez-vous les sources de cette DLL ? Est-ce une assembly .NET ?

    La documentation de cette fonction ne vous donne pas plus de détail ?

     

    Cordialement

     

    vendredi 10 août 2007 17:59
    Modérateur
  • Bonsoir je crois que vous avez raison ,c'est peut etre un problème au niveau de la fonction ,je viens d'apprendre qu'il ya  une toute dernière version je vais l'exploiter pour voir  si  notre conclusion est bien juste.
    Merci pour tout.
    A bientot.
    Cordialement,
    Destthy.
    vendredi 10 août 2007 18:06
  • bonjour destthy_flo

    avez vous réussi a faire marcher cette fonction?j'ai besoin des information sur l’intégration de l'API sesam vitale dans une application ASP.net MVC.

    Merci

    vendredi 11 août 2017 16:27