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++/CLI Discussion :

syntaxe delegate BindIPEndPointDelegate


Sujet :

C++/CLI

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut syntaxe delegate BindIPEndPointDelegate
    Bonjour,

    Je ne parviens pas à trouver la syntaxe correcte pour affecter une méthode à la propriété BindIPEndPointDelegate d'un HttpWebRequest :

    Mon delegate est la méthode BindIPEndPointCallBack.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    private: delegate IPEndPoint^ MyBindIpEndPointDelegate(
    	ServicePoint^ servicePoint,
    	IPEndPoint^ remoteEndPoint,
    	int retryCount
    );
     
    EndPoint^ BindIPEndPointCallBack(ServicePoint^ servicePoint, IPEndPoint^ remoteEndPoint, int retryCount)
    {
    	return nullptr;
    }
    SendRequestInterface(String^ url, int timeout)
    {
    	HttpWebRequest^ request = static_cast<HttpWebRequest^>(HttpWebRequest::Create(url));
     
    	request->ServicePoint->BindIPEndPointDelegate = [...]
     
    [...]
    }
    En vous remerciant par avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Cet exemple est en C# pas en C++.
    Il y a de multitudes d'exemples en C# sur le net, j'ai été capable de les trouver tout seul merci quand même, par contre impossible d'en trouver en C++/Cli.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    A Ok, votre problème est que vous ne savez pas convertir du code de C# à C++/CLI alors.

    Des convertisseurs de code, c'est pas ce qui manque. (en gros, ça va ajouter des "^" et remplacer des new par des gcnew)
    Sauf erreur de ma part, il n'y a rien dans le code C# qui n'est pas directement transposable en C++/CLI.

    Si vous analysez le code C#, vous verrez que la manière dont ils utilisent ce delegate n'a pas grand rapport avec le vôtre.

    Si ce code C# ne convient pas à votre usage en C++/CLI, pouvez-vous nous expliquer pourquoi ?

    Franchement, les différences entre du code C++/CLI et C# sont minime quand on parle d'utiliser le framework .NET.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par bacelar Voir le message
    A Ok, votre problème est que vous ne savez pas convertir du code de C# à C++/CLI alors.
    Des convertisseurs de code, c'est pas ce qui manque. (en gros, ça va ajouter des "^" et remplacer des new par des gcnew)
    Sauf erreur de ma part, il n'y a rien dans le code C# qui n'est pas directement transposable en C++/CLI.
    La syntaxe d'utilisation d'un delegate n'est pas transposable de C# en C++/Cli en ajoutant des ^. Sinon proposez-moi une réponse plutôt que de répondre à côté de la question.

    Citation Envoyé par bacelar Voir le message
    Si vous analysez le code C#, vous verrez que la manière dont ils utilisent ce delegate n'a pas grand rapport avec le vôtre.
    Désolé, je ne comprend pas cette remarque. Où voulez-vous en venir ?

    Citation Envoyé par bacelar Voir le message
    Si ce code C# ne convient pas à votre usage en C++/CLI, pouvez-vous nous expliquer pourquoi ?
    Tout simplement parce qu'il est écrit en C# et que je cherche un code en C++/Cli

    Citation Envoyé par bacelar Voir le message
    Franchement, les différences entre du code C++/CLI et C# sont minime quand on parle d'utiliser le framework .NET.
    Dans ce cas peut-être pourriez-vous simplement me donner une proposition de syntaxe pour résoudre mon problème ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    La syntaxe d'utilisation d'un delegate n'est pas transposable de C# en C++/Cli en ajoutant des ^. Sinon proposez-moi une réponse plutôt que de répondre à côté de la question.
    Bin tient, il font comment les convertisseurs ?
    On va prendre le premier que Google me donne :

    https://products.codeporting.app/convert/csharp-to-cpp

    Résultat avec le code en C# :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
     //===============================================
    // ARTIFACT: code_snippet.cpp
    #include "code_snippet.h"
     
    #include <system/scope_guard.h>
    #include <system/exceptions.h>
     
    RTTI_INFO_IMPL_HASH(2786099534u, ::UseIP, ThisTypeBaseTypesInfo);
     
    System::String UseIP::get_IP()
    {
        return pr_IP;
    }
     
    void UseIP::set_IP(System::String value)
    {
        pr_IP = value;
    }
     
    UseIP::UseIP(System::String IP)
    {
        //Self Reference+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        System::Details::ThisProtector __local_self_ref(this);
        //---------------------------------------------------------Self Reference
     
        this->set_IP(IP);
    }
     
    System::SharedPtr<HttpWebRequest> UseIP::CreateWebRequest(System::SharedPtr<Uri> uri)
    {
        System::SharedPtr<ServicePoint> servicePoint = ServicePointManager->FindServicePoint(uri);
        servicePoint->BindIPEndPointDelegate = System::MakeObject<BindIPEndPoint>(Bind);
        return System::StaticCast_noexcept<_UnknownType_>(WebRequest->Create(uri));
    }
     
    System::SharedPtr<IPEndPoint> UseIP::Bind(System::SharedPtr<ServicePoint> servicePoint, System::SharedPtr<IPEndPoint> remoteEndPoint, int32_t retryCount)
    {
        System::SharedPtr<IPAddress> address = IPAddress->Parse(this->get_IP());
        return System::MakeObject<IPEndPoint>(address, 0);
    }
     
     
     //===============================================
    // ARTIFACT: code_snippet.h
    #pragma once
     
    #include <system/string.h>
    #include <cstdint>
     
    class UseIP : public System::Object
    {
        typedef UseIP ThisType;
        typedef System::Object BaseType;
     
        typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
        RTTI_INFO_DECL();
     
    public:
     
        System::String get_IP();
     
        UseIP(System::String IP);
     
        System::SharedPtr<HttpWebRequest> CreateWebRequest(System::SharedPtr<Uri> uri);
     
    private:
     
        System::String pr_IP;
     
        void set_IP(System::String value);
     
        System::SharedPtr<IPEndPoint> Bind(System::SharedPtr<ServicePoint> servicePoint, System::SharedPtr<IPEndPoint> remoteEndPoint, int32_t retryCount);
     
    };
    Le code est pas super lisible car il est en mode "ceinture+bretelle" sécuritaire comme les "bons" générateurs de code.

    Mais vous avez la réponse : voici du code C++ qui utilise un "BindIPEndPointDelegate" suivant les recommandations données en C#.

    Un autre langage que le C++, ça vous rend aveugle ou quoi ???

    L'absence de source en C++, c'est un faux problème, la preuve, le code généré par le convertisseur.
    Faudrait penser à enlever les œillères de temps en temps.

    Désolé, je ne comprend pas cette remarque. Où voulez-vous en venir ?
    Que votre approche ne semble pas très en adéquation à comment on s'en sert habituellement ; en C++ ou en C#, on s'en cogne.

    Tout simplement parce qu'il est écrit en C# et que je cherche un code en C++/Cli
    Arrêtez de chercher, utilisez un convertisseur, bordel !

    Dans ce cas peut-être pourriez-vous simplement me donner une proposition de syntaxe pour résoudre mon problème ?
    C'est quoi votre problème ?
    Vous ne nous donnez aucuns détails sur la fonctionnalité à implémenter.
    Une proposition de syntaxe, bin le convertisseur vous en donne une "hyper-blindé", pourquoi je chercherais à faire de même avec un petit bricolage à 2 balles ?

    Si vous voulez une syntaxe plus "light" :
    https://learn.microsoft.com/en-us/cp...?view=msvc-170

    En attendant que vous enleviez vôtre masque de soudeur.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/12/2005, 12h28
  2. Syntaxe requete
    Par Chipolata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2003, 14h22
  3. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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