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 434
    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 434
    Points : 5 846
    Points
    5 846
    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

  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 434
    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 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    dans mon souvenir la plus grosse évolution est l'Unicode (STRING)

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