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 :

[D2006]Membres de l'interface COM non compilés et non accessibles par un client


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 266
    Par défaut [D2006]Membres de l'interface COM non compilés et non accessibles par un client
    J'ai implémenté une interface OLE. Tout fonctionnait bien.
    Mais les dernières méthodes que j'ai ajoutées ne sont pas compilées et ne sont pas accessibles par les applications clientes.
    Aucun avertissement dans les messages lors de la construction/compilation du projet.

    Ce qui me fait dire que le code n'est pas compilé c'est qu'il n'y a pas les points bleus devant dans l'IDE. Si j'ajoute du code qui appelle ces méthodes alors les points bleus apparaissent, mais la méthode n'est toujours pas accessible par les applications clientes.

    Message :
    Le serveur a généré une exception.
    J'utilise D2006.
    L'interface possède environ 140 méthodes qui fonctionnent très bien.

    Il y a une limite ?
    Mon fichier TLB peut avoir été endommagé ?

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 081
    Par défaut
    Est que c'est la bonne DLL qui est recensée ?
    Tu modifies ton projet, tu compiles mais le regsvr32 est sur une autre version du fichier

    Tes méthodes sont bien définies dans le fichier .TLB, le fichier _TLB.pas et le pas d'implémentation avec les bons dispid GUID et autres trucs du genre, j'ai parfois vu un déphasage entre les trois, les modifications du TLB n'étaient pas automatiquement reporté dans l'implémentation par défaut

    Attention au renommer ou couper\coller qui Windows semble choper, en tout cas, pour les COM EXE out-process, mes collègues l'ont constaté, je ne joue pas assez pour l'avoir vu mais je les crois, vu certains comportement étrange !
    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
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 266
    Par défaut
    merci,

    Ce n'est pas une DLL mais un serveur COM dans mon application (suis pas très au point sur les termes exactes). Donc il n'y a pas de dll référencée.

    Oui je retrouve bien toutes mes méthodes et propriétés dans les fichiers .tlb, _TLB.pas. Les id correspondent. Je n'ai jamais édité le fichier _tlb.pas sans passer par l'éditeur visuel du fichier .tlb.

    Et je confirme que l'éditeur de TLB a des comportement très étranges...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 266
    Par défaut
    Le problème est lié a une mauvaise opération de ma part.

    Si ça intéresse quelqu'un :

    J'avais fait une copie du projet en faisant enregistrer-sous depuis Delphi. Dans ce cas là Delphi créé une copie du fichier TLB (déclaration de l'interface du serveur COM).
    Puis j'avais manuellement modifié mon projet copié pour utiliser le même fichier TLB que dans le projet initiale. Mais dans l'unité d'’implémentation du serveur COM je pointais toujours vers la TLB temporaire.
    Du coup quand je déclarais des nouvelles fonctions, je ne déclarai pas dans le bon fichier TLB.
    Je savais qu'il fallait faire attention quand une app contient un serveur COM, mais j'ai encore fait une bétise

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 081
    Par défaut
    Citation Envoyé par Zatoobux Voir le message
    suis pas très au point sur les termes exactes).
    Je ne suis pas mieux que toi entre COM, OLE ... si tu ne veux pas te tromper
    COM In-Process = DLL
    COM Out-Process = EXE
    DCOM = EXE
    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.

Discussions similaires

  1. RTTI:Lister les propriétés d'une interface COM
    Par zeprogrameur dans le forum Langage
    Réponses: 10
    Dernier message: 09/11/2005, 16h06
  2. Réponses: 5
    Dernier message: 26/09/2005, 11h59
  3. [Avis] Interfaces graphiques à la main ou non ?
    Par pugnator dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 11/09/2005, 18h45
  4. Réponses: 12
    Dernier message: 26/08/2005, 10h02
  5. Réponses: 9
    Dernier message: 03/03/2005, 14h36

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