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 :

Communiquer avec un ActiveX


Sujet :

API, COM et SDKs Delphi

  1. #21
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut
    Oui le fait d'assigner le propriété "command" provoque le message d'erreur:
    "Le projet a déclenché la classe d'eception EOleSysErrir avec le message 'Classe non enregistrée, ClassID: {4217208C-3198-4688-B05A-8015294CED16}'

    L'exception se trouve dans la fonction CreateComObject de l'unité System.Win.ComObj


    Dans la base de registre, une recherche sur "SQS242" donne ceci :
    HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{4217208C-3198-4688-B05A-8015294CED16}\ProgID et en donnée il y a: "SQS242X.cComm242"


    Je retrouve bien ce GUID dans l'unité SQS242X_TLB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TcComm242.InitServerData;
    const
      CServerData: TServerData = (
        ClassID:   '{4217208C-3198-4688-B05A-8015294CED16}';
        IntfIID:   '{6E481EF2-CD76-405B-88D1-55D4394B3BF6}';
        EventIID:  '{15D72DE9-788F-47F2-A418-A120C0158788}';
        LicenseKey: nil;
        Version: 500);
    begin
      ServerData := @CServerData;
    end;

    Je viens d'essayer le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm3.BtnConnectClick(Sender: TObject);
    begin
     // cComm2421.Connect;
      ShowMessage(IntToStr(NativeInt(CocSQS242Comm.Create())));
      ShowMessage(IntToStr(NativeInt(CocSQS242Comm.Create().SQS242Comm)));
      CocSQS242Comm.Create().SQS242Comm.Command := 'toto';
    end;
    J'ai les messages suivants:
    - 21627476
    - puis 21012660
    Aucun message d'erreur

  2. #22
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut
    et rien non plus dans les évènements OnResponsEvent et OnCommandEvent. Ils ne sont pas appellés
    En revanche si je fais cComm2421.Command:='@QM;21;00'; j'ai la même exception que précédemment.

  3. #23
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Si CocSQS242Comm.Create().SQS242Comm retourne un _cComm242 valide on peut donc essayer ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm3.BtnConnectClick(Sender: TObject);
    begin
      cComm2421.ConnectTo(CocSQS242Comm.Create().SQS242Comm); // faut une Interface _cComm242 en paramètre, peut importe la façon de la créer
      cComm2421.Command := '@QM;21;00';
    end;
    Mais cela me fait penser que "_cSQS242Comm" est la classe enregistrée qui sert de factory à une instance de "_cComm242"
    On ne peut pas instancier directement une "_cComm242" qui doit être instanciée par l'activeX (SQS242X.exe) que l'on récupère via "_cSQS242Comm"
    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

  4. #24
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut
    Ca marche !
    ShaiLeTroll, je ne sais comment te remercier.
    ll y a des gens dont les compétences m'étonnent et tu en fais partie.
    Bravo et merci pour l'investissement que tu fais dans ce forum.

  5. #25
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    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 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Je me suis battu avec des ActiveX VB dès ma 3ème année d'apprentissage, c'était il y a longtemps

    J'ai bcp appris quand j'ai fait mon dernier COM, il y a bien 10 ans.
    J'ai maintenu du DCOM mais sans vraiment devoir m'y intéresser (surtout que cela a été traduit en DataSnap)
    Je me dis que cela fait longtemps que je n'en ai pas fait ... et je constate que la technique du tâtonnement pour trouver la bonne CoClasse fonctionne encore
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [TComport] communiquer avec un s7 200
    Par kirty dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/11/2005, 19h50
  2. Réponses: 7
    Dernier message: 27/09/2005, 10h38
  3. [Lisp] Communiquer avec une fonction en c++
    Par Nadine dans le forum Lisp
    Réponses: 5
    Dernier message: 10/01/2005, 20h15
  4. [TComport] communiquer avec un PIC
    Par tracks dans le forum C++Builder
    Réponses: 5
    Dernier message: 09/06/2004, 13h11
  5. PB d'import avec les ActiveX sous BCB6
    Par dergen dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/11/2002, 10h18

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