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 :

[Delphi 2005] Librairie Word (Word_TLB) ne compile pas


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 15
    Points : 12
    Points
    12
    Par défaut [Delphi 2005] Librairie Word (Word_TLB) ne compile pas
    Bonjour,

    Je me suis intéressé à l'article de Nono40 sur le correcteur orthographique Word (http://nono40.developpez.com/tutorie...rd/correction/)..

    J’ai ouvert un nouveau projet File->new->VCL Form Application for Delphi win 32
    Puis j’ai directement installé la librairie en suivant les consignes de l’article.
    J’ai mis word_tlb dans les uses de mon mainForm, et j’ai fait un premier run
    Surprise, le compilateur m'a indiqué une erreur dans la librairie.


    Je travaille avec Delphi2005 Architect (update 3), Windows XP (service pack 2) et la suite office 2003.

    J'ai cherché sur le site de Borland et quelques newsgroups. Mais rien.

    Quelqu'un aurait il rencontré le meme genre de probleme ou aurait il une idée?

    Par avance merci,

    Nicolas

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    J'ai mis la section problématique en commentaire Masi cela me pose toujours un problème puisque c'est une librairie que je n'ai aps écrite...

  3. #3
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Si tu pouvais nous donner le texte de l'erreur et la ligne correspondante

    Si le fait de mettre une partie de l'unite tlb en commentaire n'est pas un problème vu que c'est une unité déduite du fichier .TLB de Microsoft. Mais je suis tout te même curieux de connaitre l'erreur...
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Désolé, voici le message et le code incriminé :

    Erreur : Word_TLB.pas(34713): E2015 Operator not applicable to this operand type

    procedure TWordDocument.InvokeEvent(DispID: TDispID; var Params: TVariantArray);

    begin

    case DispID of

    -1: Exit; // DISPID_UNKNOWN

    4: if Assigned(FOnNew) then

    FOnNew(Self);

    5: if Assigned(FOnOpen) then

    FOnOpen(Self);

    6: if Assigned(FOnClose) then

    FOnClose(Self);

    7: if Assigned(FOnSync) then

    FOnSync(Self, Params[0] {MsoSyncEventType});

    8: if Assigned(FOnXMLAfterInsert) then

    FOnXMLAfterInsert(Self,

    IUnknown(TVarData(Params[0]).VPointer) as XMLNode {const XMLNode},

    Params[1] {WordBool});

    //9: if Assigned(FOnXMLBeforeDelete) then

    // FOnXMLBeforeDelete(Self,

    // IUnknown(TVarData(Params[0]).VPointer) as Range {const Range},

    // IUnknown(TVarData(Params[1]).VPointer) as XMLNode {const XMLNode},

    // Params[2] {WordBool});

    end; {case DispID}

    end;

  5. #5
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Ce code est illisible comme ça. Encadre-le de balises [code] et supprime les lignes vides.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Désolé, voici le code plus lisible...
    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
     
    procedure TWordDocument.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
    begin
      case DispID of
        -1: Exit;  // DISPID_UNKNOWN
        4: if Assigned(FOnNew) then
             FOnNew(Self);
        5: if Assigned(FOnOpen) then
             FOnOpen(Self);
        6: if Assigned(FOnClose) then
             FOnClose(Self);
        7: if Assigned(FOnSync) then
             FOnSync(Self, Params[0] {MsoSyncEventType});
        8: if Assigned(FOnXMLAfterInsert) then
             FOnXMLAfterInsert(Self,IUnknown(TVarData(Params[0]).VPointer) as XMLNode {const XMLNode},Params[1] {WordBool});
        9: if Assigned(FOnXMLBeforeDelete) then
             OnXMLBeforeDelete(Self,IUnknown(TVarData(Params[0]).VPointer) as Range {const Range},IUnknown(TVarData(Params[1]).VPointer) as XMLNode {const XMLNode},Params[2] {WordBool}); 
      end; {case DispID}
    end;
    et l'erreur : Erreur : Word_TLB.pas(34713): E2015 Operator not applicable to this operand type

    c'est le cas égal à 9 qui pose problème

  7. #7
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Je me souviens maintenant que j'avais eut cette erreur.
    J'avais importé la TLB bien avant d'écrire cet article et je n'ai plus pensé à ce problème lors de sa rédaction.

    Il faut corriger le cas 9 comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        9: if Assigned(FOnXMLBeforeDelete) then
             FOnXMLBeforeDelete(Self,
                                IUnknown(TVarData(Params[0]).VPointer) as Word_TLB.Range {const Range},
                                IUnknown(TVarData(Params[1]).VPointer) as XMLNode {const XMLNode},
                                Params[2] {WordBool});
    Je vais mettre à jour l'article pour tenir compte de ce problème.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2007, 07h27
  2. Librairies sur delphi 2005 et pas 2007
    Par fredoBreton dans le forum EDI
    Réponses: 2
    Dernier message: 15/02/2006, 20h23
  3. Réponses: 3
    Dernier message: 23/12/2005, 17h21
  4. [Firebird] on ne peux pas l'exploiter avec Delphi 2005 ??
    Par Harry dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/04/2005, 11h40
  5. inclus ou pas inclus dans delphi 2005
    Par lopezpacheco dans le forum Débuter
    Réponses: 4
    Dernier message: 11/02/2005, 00h43

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