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

Delphi Discussion :

Déclarer une fonction ayant 2 prototypes dans une DLL


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut Déclarer une fonction ayant 2 prototypes dans une DLL
    Bonjour à tous...

    Je suis en train de créer une DLL en DELPHI (cette DLL sera utilisé principalement dans des programme C) et je souhaire déclarer une fonction ayant plusieur prototype.
    Exemple:
    MaFonction (param 1: integer);
    MaFonction(param 1: integer; param 2: integer);

    Est-ce possible et si oui comment dois je faire?

    Merci d'avance...

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Je ne crois pas que c'est possible...
    Comment les exports des fonctions dans la dll pourrait bien être écrite
    pour arriver à cette fin?!?

    Cependant, je crois qu'avec une valeur par défault dans Param2 ca pourrait fonctionner.

    function MaFonction(param1: integer; param2: integer=High(integer)):integer;

    tu pourrais alors considérer que si Param2=High(integer)
    alors Param2 est absent.

  3. #3
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Je ne suis pas sûr qu'une valeur par défaut soit acceptée pour les routines à exporter. Ou en tout cas elle n'aura aucun effet. Cela marcherait si l'application utilisatrice était en Pascal Objet/Delphi, car là tu pourrais récupérer le truc avec un type fonction ayant un paramètre par défaut. Mais le C & Co n'ont pas de paramètres par défaut.

    Ton problème est totalement insoluble. Tu as besoin de nommer tes deux fonctions différemment, ou du moins de les exporter sous deux noms différents.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Je crois que sjrd a raison.

    Est-ce qu'on ne pourrait pas utiser plutôt une listes variables
    d'arguement? C'est quelque chose que le C gère bien.
    MaFonction ( const Args: array of const )

    où quelque chose du genre...

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    ca pourrait être quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //prototype C++ :
    bool MaFonction(const System::TVarRec *KeyValues, const int KeyValues_Size);
     
    //Utilisation en C++
    MaFonction( ARRAYOFCONST(1,3))
     
    //function Delphi
    function MaFonction(const KeyValues: array of const) : Boolean;
    par contre ca semble spécifique à C++ Builder?
    J'ai pas de compilateur C++ sous la main alors si quelqu'un veut bien tester et/ou commenter l'approche...

  6. #6
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par Eric Boisvert
    par contre ca semble spécifique à C++ Builder?
    Oui c'est une adaptation des array of const de Delphi à C++.

    Par ailleurs, si le C/C++ gère très bien les paramètres variables, ils ne sont absolument pas supportés par Delphi.

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 435
    Points : 5 848
    Points
    5 848
    Par défaut
    salut


    pourquoi ne pas utilié un pchar pour passé tes different paramettre

    il te suffit ensuite simplement d'evaluer la chaine

    @+ Phil

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour l'import, il y a la directive varargs (à utiliser avec la convention d'appel cdecl) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function printf(Format: PChar): Integer; cdecl; varargs;
    peut-^etre que c'est la clé

  9. #9
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Ca c'est pour utiliser une routine C depuis un programme Delphi. Lui cherche à faire le contraire... Donc, non

Discussions similaires

  1. [POO] Appeler une fonction par son nom dans une variable
    Par whitespirit dans le forum Langage
    Réponses: 16
    Dernier message: 18/06/2008, 11h23
  2. une fonction pour le bgcolor dans une datatable
    Par ghnawfal dans le forum JSF
    Réponses: 2
    Dernier message: 09/04/2008, 13h33
  3. Réponses: 2
    Dernier message: 20/06/2006, 08h22
  4. Réponses: 4
    Dernier message: 05/10/2005, 18h19
  5. fonction récupérant des valeurs dans une fonction popup...
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2005, 14h51

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