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

C++Builder Discussion :

Erreur type interdit dans __property


Sujet :

C++Builder

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut Erreur type interdit dans __property
    Salut à tous,

    eh oui je suis encore entrain de coder (ou du moins d'essayer ) des composants.

    Bon voila mon problème, une erreur que je ne comprend pas et que j'arrive encore moins à corriger :

    [C++ Erreur] ImageListBoxEntries.h(25): E2109 Ce n'est pas un type autorisé
    J'ai défini un type : TImageListBoxEntries de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    {
       AnsiString  MainText;
       AnsiString  SubString;
       int         ImageIndex;
    } TImageListBoxEntry;
    et l'erreur se produit à la ligne suivante (de la déclaration de mon composant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    __property TImageListBoxEntry* Entries[int Index] = { read = GetItem, write = PutItem };
    Les deux fonctions GetItem et PutItem ont pour prototype :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TImageListBoxEntry* __fastcall GetItem( int Index );
    void __fastcall PutItem( int Index, TImageListBoxEntry *item );
    Donc si une bonne âme pouvait m'expliquer le sens profond de cette erreur, je l'en remercie par avance !

  2. #2
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Salut,

    j'ai essayé ton code sur une TForm et ca a bien compilé J'ai mis la structure ainsi que les eux fonctions et la propriété dans le le .h...

    Tu la déclares où ta structure ?

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Salut, merci d'avoir tester.

    Je déclare ma structure comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef struct
    {
       AnsiString  MainText;
       AnsiString  SubString;
       int         ImageIndex;
    } TImageListBoxEntry;
     
       // Une liste de ces éléments
    class PACKAGE TImageListBoxEntries : public TList
    {.....
    EDIT : D'ailleur il me saoule de la même manière si à la place de TImageListBoxEntries je met un TPoint par exemple (dans un autre composant).

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Salut à tous,

    je crois commencer à comprendre qu'une structure ne peut être un type pour une propriété...mais bon j'ai changé ma structure en classe ça marche pas mieux...

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Voilà j'ai fini par trouver un petit quelque chose qui marche, si ça peut intéresser quelqu'un, ou bien si quelqu'un à une solution plus "simple".

    Il suffit de déclarer la structure comme une classe qui dérive de TPersistent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class TImageListBoxEntry : public TPersistent
    {
       public:
          AnsiString  MainText;
          AnsiString  SubString;
          int         ImageIndex;
    };
    Et voilà ça compile

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/01/2007, 14h25
  2. Réponses: 9
    Dernier message: 05/10/2006, 09h31
  3. Réponses: 2
    Dernier message: 13/06/2006, 09h47
  4. Réponses: 9
    Dernier message: 31/05/2006, 16h08
  5. [LG] Erreur de type incompatible dans assignment
    Par Tuxico dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2005, 22h06

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