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

API, COM et SDKs Delphi Discussion :

Passage d'un tableau par référence à une fonction avec OLE depuis Delphi XE2


Sujet :

API, COM et SDKs Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Points : 32
    Points
    32
    Par défaut Passage d'un tableau par référence à une fonction avec OLE depuis Delphi XE2
    Bonjour,

    J'ai un problème depuis XE2 avec le passage d'un paramètre par référence d'un tableau de variants à une fonction.
    J'ai le message suivant :
    Le projet Pxxx.exe a déclenché la chasse d'exception EOleException avec le message 'Type Mismatch in monParametreFonction for Objet.FunctionCall() Method. Pass an array by Reference'.

    Mon code est le suivant :

    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
     
    type
      TObRunParams = record
        pIN: OleVariant;
        pOUT: OleVariant;
      end;
     
      TMonObjet = class(...)
      private
        FObApp: OleVariant;
        FObFct: OleVariant;
      public
        property ObApp: OleVariant read FObApp Write FObApp;
        property ObFct: OleVariant read FObFct Write FObFct;
        procedure CallObFct();
      end;
     
    procedure TMonObjet .AppelFonction;
    var
       Params: TObRunParams;
    begin
        Params.pIN := VarArrayCreate([0, 1], varVariant);
        Params.pOUT := VarArrayCreate([0, 3], varVariant);
        FObApp := CreateOleObject('Monapp');
        FObFct := FObApp.Function(aFncFileNme, aFncImplNme);
        ObFct.Call(VarArrayRef(aParams.pIN), VarArrayRef(aParams.pOUT)); ==> // Plantage
    end;
    Une idée ?

    D'avance merci

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    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 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    as tu essayé cette solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TMonObjet .AppelFonction;
    var
      Vin, Vout: Variant;
    begin
        Vin := VarArrayCreate([0, 1], varVariant);
        Vout := VarArrayCreate([0, 3], varVariant);
        FObApp := CreateOleObject('Monapp');
        FObFct := FObApp.Function(aFncFileNme, aFncImplNme);
        ObFct.Call(VarArrayRef(Vin), VarArrayRef(Vout)); ==> // Plantage
    end;
    je ne suis pas sur que le membre d'un record soit considéré comme une variable
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Merci d'abord pour ta réponse.

    Hélas cette solution ne résout pas le problème...

    Quelque chose a du changer avec l'une des versions entre Delphi2007 et Delphi XE2, mais quoi ?

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    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 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    dans mon souvenir la plus grosse évolution est l'Unicode (STRING)
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. Passage d'un tableau php dans une fonction javascript
    Par mcdelay dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/09/2013, 17h25
  2. Réponses: 0
    Dernier message: 15/06/2010, 10h58
  3. Réponses: 6
    Dernier message: 28/12/2009, 16h45
  4. Réponses: 6
    Dernier message: 08/10/2007, 13h50
  5. Passage d'un tableau par référence?
    Par sebduth dans le forum C
    Réponses: 9
    Dernier message: 16/07/2003, 18h32

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