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

Langage Delphi Discussion :

création d'une dll avec des pointeurs en paramètre


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut création d'une dll avec des pointeurs en paramètre
    Bonjour,

    J'ai créé une procédure dans une dll comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure CalculBoulonsNecessaire(g_Assemblage : TAssemblage; effortNormal,effortTranchant,EfforTranchant_P2 : double;LeConnecteur : TConnect;NbFibre1,NbFibre2 : LongWord);stdcall;
    est un pointeur sur une structure

    Lorsque j'appelle cette fonction, le g_Assemblage que j'ai placé en paramètre devient nil à l'intérieure de la fonction de la dll.

    D'où vient mon erreur??

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 522
    Points : 25 052
    Points
    25 052
    Par défaut
    La convention de nommage est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PAssemblage = ^TAssemblage;
    TAssemblage = record
    ...
    end;
    As-tu fais le New ou utilisé @ ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    C'est la conjonction d'une série d'erreurs, il faut passer l'adresse de la structure et non pas le pointeur, j'avais oublié de mettre un stdcall quelque part (je faisais ça en delphi)...

    Merci

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par patoche.05 Voir le message
    il faut passer l'adresse de la structure et non pas le pointeur
    Heuuu .... c'est quoi la différence entre une adresse et un pointeur (si ce n'est les lettres) ?

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 522
    Points : 25 052
    Points
    25 052
    Par défaut
    C'est l'écart entre le cerveau droit et le cerveau gauche ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par guillemouze Voir le message
    Heuuu .... c'est quoi la différence entre une adresse et un pointeur (si ce n'est les lettres) ?
    Je suppose qu'il veut dire l'adresse de la structure et l'adresse du pointeur lui même plutôt que l'adresse pointée par le pointeur...

  7. #7
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    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
     
    unit BoulonsTypes;
     
    interface
     
    type
      PAssemblage = ^TAssemblage;
      TAssemblage = packed record
        // ... //
      end;
     
    const
      SizeOfAssemblage = sizeOf(TAssemblage);
     
    type
      PConnect = ^TConnect;
      TConnect = packed record
        // .. //
      end;
     
    const
      SizeOfConnect = SizeOf(TConnect);
     
    implementation
     
    end.
    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
     
    library Boulons;
     
    uses BoulonsTypes;
     
    procedure CalculBoulonsNecessaire(
      aAssemblage : PAssemblage; 
      aEffortNormal, aEffortTranchant1, aEffortTranchant2 : double;
      aConnecteur : PConnect;
      aNbFibre1, aNbFibre2 : LongWord); stdcall;
    begin
      // ... //
    end;
    exports CalculBoulonsNecessaire;
     
    begin
    end.
    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
     
    unit BoulonsWrapper;
     
    interface
     
    uses BoulonsTypes;
     
    procedure CalculBoulonsNecessaire(
      aAssemblage : PAssemblage; 
      aEffortNormal, aEffortTranchant1, aEffortTranchant2 : double;
      aConnecteur : PConnect;
      aNbFibre1, aNbFibre2 : LongWord); stdcall;
     
    implementation
     
    const
      LibBoulons = 'boulons.dll';
     
    procedure CalculBoulonsNecessaire; external LibBoulons name 'CalculBoulonsNecessaire';
     
    end.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  8. #8
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Dr. Who, quel est l'interet de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    const
      SizeOfConnect = SizeOf(TConnect);
    sachant que SizeOf(...) est interpreté a la compilation et remplacé par la bonne valeur directement ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Data] Création d'une session avec des données du runtime
    Par NeedToHelp dans le forum Spring
    Réponses: 2
    Dernier message: 17/07/2009, 11h13
  2. Création d'une DLL avec CodeDom
    Par Ryants dans le forum Windows Forms
    Réponses: 0
    Dernier message: 14/04/2009, 22h27
  3. [code::blocks] Créer une dll avec des fonctions en C
    Par dewey01 dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 29/09/2008, 15h24
  4. Réponses: 4
    Dernier message: 22/11/2007, 19h23
  5. Creer une DLL avec des icônes
    Par Larion dans le forum C++Builder
    Réponses: 5
    Dernier message: 13/03/2005, 17h28

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