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

C# Discussion :

Fonctionnement de la mémoire avec mot-clé ref dans une méthode


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Fonctionnement de la mémoire avec mot-clé ref dans une méthode
    Bonjour,

    J'ai un doute sur le fonctionnement de la mémoire en C#. Je suis en train d'écrire un programme C# qui utilise une bibliothèque écrite en C. Une des méthodes de cette bibliothèque a une signature du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ushort method(ulong* ptr)
    Quand j'appelle cette méthode, en C#, je pensais utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ushort S = method(ref L)
    pour que soit passé à la fonction, l'adresse de la variable L.

    Pouvez-vous me dire si cette manière de faire est correcte ?

    Merci d'avance pour le coup de main!

  2. #2
    Membre du Club
    Inscrit en
    Février 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 34
    Points : 43
    Points
    43
    Par défaut
    Hello. Il faut plus de détails pour qu'on puisse t'aider. C'est quoi ton L? La méthode attend quoi ? Une référence vers un élément ? Ou un tableau ? De combien d'éléments ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En fait dans la bibliothèque en C, il y a une méthode qui prend en paramètre un pointeur vers un paramètre de type long.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    ushort method(ulong* ptr)

    Donc dans mon code C# après avoir importé la DLL, je voulais appeler la méthode ainsi :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uint entier = 0;
    ulong param = 0;
    entier = method(ref param)
    Justement pour envoyer l'adresse de param à ma méthode, et non pas sa valeur. Seulement ça ne compile pas.
    En fait j'ai un peu avancé depuis hier, maintenant j'envoie directement un pointeur à la méthode, de cette manière :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    uint entier = 0;
    ulong* param;
    *param = 0;
    entier = method(param);
    En utilisant du code unsafe.

    Ma question : peut-on faire autrement pour conserver du code managé ?
    Je n'ai rien trouvé malgré beaucoup de recherches, donc j'imagine que non.
    Merci pour ton aide!

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    Comment as-tu importé ta méthode en C# normalement cette signature devrais convenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static extern ushort method(ref ulong ptr);

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui exact c'est ce que j'ai mis avec un Dllimport qui va bien.

Discussions similaires

  1. Intérêt de mot clef const dans une méthode
    Par teddyalbina dans le forum C#
    Réponses: 3
    Dernier message: 05/03/2012, 14h22
  2. [AC-2010] Vérification de mot de passe dans une table ne fonctionne pas
    Par toumack dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/08/2011, 20h50
  3. [VB6] Problème avec la touche 0 dans une MaskEdBox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 02/03/2006, 09h47
  4. Réponses: 2
    Dernier message: 22/02/2006, 11h18
  5. sécuriser le mot de passe dans une page asp
    Par Redouane dans le forum ASP
    Réponses: 2
    Dernier message: 10/03/2004, 21h16

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