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++Builder Discussion :

Problème pointeur de fonction


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 61
    Points : 40
    Points
    40
    Par défaut Problème pointeur de fonction
    Salut!
    Je me lance dans les pointeurs de fonctions, et je bloque

    Dans mon projet, j'ai une Unit1 et un threat TThread.
    Mon but, est de pouvoir appeler des fonctions de Unit1 dans mon TThread sans devoir le référencer.
    On m'a dis de me tourner vers les pointeurs de fonctions:

    Unit1.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void __fastcall PbarBegin(int AWorkCountMax);
    void (*p_f1)(int);
    Unit1.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    p_f1 = & PbarBegin;
    Malheureusement, j'ai le droit à cette belle erreur :
    Impossible de convertir 'void (_fastcall TForm1::*)(int)' en 'void (*)(int)'

    Est ce que vous pouvez m'éclairer ?

    Merci

  2. #2
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Alors,
    si je ne m'abuse, il faut déclarer un type pointeur de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef void ( __closure *ptr_int)(int);
    A partir de là tu pourras par exemple définir un proto de fonctionn qui y ferait appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_proto(ptr_int fpoint);
    à l'appel tu pourras faire ceci :
    et ta fonction fera :
    en espérant ne pas me tromper et que ça t'aide
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Merci Say!

    Par contre, je ne comprends pas ton proto

  4. #4
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    en fait, c'est un exemple d'une fonction qui prendrait un pointeur de fonction en paramètre, ce qui me semblait adapté pour ton thread.
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  5. #5
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,
    je ne suis pas un crack de l'informatique mais il me semble qu'il est possible d'initialiser le pointeur sur fonction sans utiliser __closure.
    Je pense qu'il faudrait écrire:au lieu deD'après ce que je crois savoir, le nom de la fonction à la valeur d'un pointeur sur cette fonction.
    A voir...
    @ bientôt...

    Salut & @+ sur 3W!

  6. #6
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    perso, si j'ai fait ça, c que ça ne marchait pas

    après c'est des suggestions, je peux être à côté de la plaque
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Merci les gars, je vais voir ce que je peu faire.


    Rtg57, moi si je fais ça, ça me fait une erreur...

  8. #8
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    effectivement avec CBuilder, la syntaxe que je proposait ne fonctionne pas.
    Il faut utiliser __closure (On en apprend tous les jours).
    Merci à Say
    @ bientôt...

    Salut & @+ sur 3W!

Discussions similaires

  1. Problème Pointeur de fonction
    Par olivier21c dans le forum C++
    Réponses: 6
    Dernier message: 06/10/2014, 14h05
  2. Problème pointeurs et fonctions
    Par crimetime dans le forum Débuter
    Réponses: 10
    Dernier message: 25/06/2010, 13h40
  3. Réponses: 4
    Dernier message: 10/12/2009, 00h45
  4. Problème pointeur sur fonction static
    Par Julien_C++ dans le forum C++/CLI
    Réponses: 5
    Dernier message: 11/01/2008, 19h26
  5. Problème: pointeur de fonction à partir d'un namespace
    Par akileaQuébec dans le forum C++
    Réponses: 8
    Dernier message: 09/10/2007, 10h37

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