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 :

D6 édition personnelle et création d'objet automation


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut D6 édition personnelle et création d'objet automation
    Bonjours à tous.

    Travaillant toujours sous DELPHI 6 EDITION PERSONNELLE, et ne souhaitant pas changer de version, j'aurai besoin de créer un "objet automation".
    Malheureusement, cette version personnelle ne dispose pas d'assistant à cet effet.
    Connaîtriez-vous un programme ou plugin qui me permettrait de pallier l'absence d'assistant et de m'aider dans la création d'un tel objet ?
    A défaut, pensez vous qu'il soit possible de tout faire "à la main" ?

    D'avance merci pour vos précisions.

    Un delphiplodocus

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Pour ma part je l'ignore, le code d'un objet automation, peut être tapé, par contre le problème c'est la TLB, tu dois cherche un editeur de TLB (chez Microsoft, tu dois quand même avoir tlibimp.exe fourni), ... ou voir sur le CD de Delphi ou dans program files, si l'éditeur de TLB n'est pas lançable en ligne de commande

    Juste comme ça, ton programme tu le distribue ?

    le DPR

    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
     
    library MonObjet;
     
    uses
      SysUtils,
      Classes,
      ComServ,
      MonObjet_Impl in 'MonObjet_Impl.pas' {MonObjetImpl: CoClass},
      MonObjet_TLB in 'MonObjet_TLB.pas',
     
     
    {$R *.TLB}
     
    {$R *.res}
     
    exports
      DllGetClassObject,
      DllCanUnloadNow,
      DllRegisterServer,
      DllUnregisterServer;
     
    begin
     
    end.
    le 'MonObjet_Impl.pas'

    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
    unit MonObjet_Impl;
     
    {$WARN SYMBOL_PLATFORM OFF}
     
    interface
     
    uses
      Windows, ActiveX, Classes, ComObj, StdVcl, SysUtils,
      Contnrs,
      MonObjet_Impl_TLB;
     
    type
      TMonObjetImpl = class(TAutoObject, IMonObjet)
      protected
        les méthodes en stdcall ou safecall; // ça c'est pas évident à mettre la bonne syntaxe en utilisant un editeur externe, entre les Disp Interface, le Dual, ...
      end;
    enfin le 'MonObjet_TLB.pas', le pire à mon avis (sans compter le fichier .TLB lui même)
    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
     
    unit MonObjet_TLB;
     
      LIBID_MonObjet: TGUID = '{un GUID, voir CreateGUID et GUIDToString}';
     
      IID_IMonObjet: TGUID = '{un GUID}';
      CLASS_MonObjetImpl: TGUID = '{un GUID}';
     
    type
     
      IMonObjet = interface;
      IMonObjetDisp = dispinterface; // ne me demande pas, je te simplifie le fichier généré par l'éditeur ...
     
      MonObjetImpl = IMonObjet;
     
    // *********************************************************************//
    // Interface   : IMonObjet
    // Indicateurs : (4416) Dual OleAutomation Dispatchable
    // GUID        : {le GUID IID_IMonObjet}
    // *********************************************************************//
      INeoScopeLAD = interface(IDispatch)
        ['{le GUID IID_IMonObjet}']
        les déclarations
      end;
    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
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Pour ma part je l'ignore, le code d'un objet automation, peut être tapé, par contre le problème c'est la TLB, tu dois cherche un editeur de TLB (chez Microsoft), ...

    Juste comme ça, ton programme tu le distribue ?
    entre nous, vu comment le TLB editor est bugué (en tout cas en version 5), ça serait pas mal d'avoir une alternative

    EDIT: et je ne suis pas le seul à le penser
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    J'utilise celui de D7, je n'ai pas trop de soucis, mais je suis TRES TRES précautionneux (je l'ai bcp utilisé pendant 2 ans, je sais par réflexe, les choses à ne pas faire), surtout que je dois souvent faire des objets utilisable en .NET donc safecall alors les fonction qui renvoie des interfaces tout en étant safecall, ils n'ont pas prévu de mettre **IMonInterface on a que *IMonInterface dans l'Editeur ... j'ai galéré pour le comprendre ...
    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

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    J'utilise celui de D7, je n'ai pas trop de soucis, mais je suis TRES TRES précautionneux (je l'ai bcp utilisé pendant 2 ans, je sais par réflexe, les choses à ne pas faire), surtout que je dois souvent faire des objets utilisable en .NET donc safecall alors les fonction qui renvoie des interfaces tout en étant safecall, ils n'ont pas prévu de mettre **IMonInterface on a que *IMonInterface dans l'Editeur ... j'ai galéré pour le comprendre ...
    ah mais y'a une blague aussi entre D5 et D2005...je ne sais plus dans quel sens ça le fait, mais pour une même TBL l'un des deux te fait un _TBL.pas en safecall et pas l'autre
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    ça doit être par ce que safecall peut être remplacé par un stdcall avec un HResult en retour, par contre, uniquement pour une procédure pas pour une fonction ! du moins je pense ... après j'ignore les autres différnces entre safecall et stdcall+HResult
    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

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    ça doit être par ce que safecall peut être remplacé par un stdcall avec un HResult en retour, par contre, uniquement pour une procédure pas pour une fonction ! du moins je pense ... après j'ignore les autres différnces entre safecall et stdcall+HResult
    oui c'est ça, en fait les deux sont équivalent, soit tu as une fonction qui retourne un HResult (que tu vas généralement tester avec un OleCheck() ou autre), soit tu as une procédure safecall qui teste automatiquement le HResult caché pour lever une exception

    je n'ai plus en tête le détail, mais quand tu coches je ne sais plus quelle option dans le TLB editor, D5 te fait des safecall alors que D2005 te fait des HResult...c'est très chiant quand tu partages le même TBL entre un projet D5 et un projet D2005
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [Vxi3] WEBI - Création d'objet personnel
    Par pititeju dans le forum Webi
    Réponses: 0
    Dernier message: 04/09/2013, 08h24
  2. [PowerBuilder] Création d'objets dynamiques
    Par Béné123456789 dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 12/06/2006, 00h33
  3. [FLASH MX2004] Création d'objet dynamiquement
    Par noarno dans le forum Flash
    Réponses: 3
    Dernier message: 15/12/2004, 11h00
  4. Equivalent TWebBrowser sous Delphi édition personnelle
    Par lil_jam63 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 22/09/2004, 18h52

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