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 :

ClassName pour pointeur [Trucs & Astuces]


Sujet :

C++Builder

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 94
    Par d�faut ClassName pour pointeur
    bjr
    j'ai un TList dans lequel je met des AnsiString* ou des int* dedans mais je voudrais savoir quel est le type quand je lis mes items.
    j'ai essay�
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if( ((TObject *)MaList->Items[0])->ClassName() == "AnsiString")
    mais �a marche pas ya-t-il une m�thode quelquonque ?
    merci d'avance

  2. #2
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonjour,
    Tu n'as pas plutot ?
    @ +

  3. #3
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Je ne sais pas s'il est tr�s bon d'avoir deux types diff�rents dans un TList mais c'est une autre affaire. Je ne crois pas que les int et AnsiString soient des TObject au sens de la VCL.

    Si donc vous n'avez que des pointeurs d'AnsiString et d'int, le mieux est de cr�er une m�thode, appelons-la tryAnsiString, qui dira si l'adresse donn�e en argument pointe ou non un AnsiString. Donc vous d�clarez cette m�thode bool�enne dans la classe principale.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    bool __fastcall tryAnsiString(void*);
    On peut programmer ainsi cette m�thode.

    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
    bool __fastcall TForm1::tryAnsiString(void* V)
    {
    bool OK=true;
     
    try
       {
       AnsiString* B=(AnsiString*)(V);
       AnsiString C=*B;
       }
     
    catch(...)
       {
       OK=false;
       }
     
    return OK;
    }
    Dans ces conditions, si i est un indice valide dans la TList, il suffira d'�crire

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    if(tryAnsiString(l->Items[i])) 
       {
       // c'est un AnsiString
       }
    else
       {
       // c'est un int
       }
    Attention, C++ Builder n'aime pas trop qu'on fasse du pas � pas avec des try/catch, il y a des pr�cautions � prendre, le mieux est de tester hors C++ Builder en cliquant l'ic�ne juste apr�s compilation.

    � bient�t
    Gilles

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bonjour,
    tu peux utiliser une classe de la VCL parfaitement adapt�e a ce besoin
    la classe TObjectList qui elle permet de travailler avec une liste d'objects de types diff�rents

    la m�thode FindInstanceOf te permet de retrouver dans la liste les objects d'un type d�sir�

    Cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 94
    Par d�faut
    ok merci
    mais pourquoi ce n'est pas bon de mettre des types diff�rents dans un TList ?
    je met des pointeur int, AnsiString, TStringList, et m�me des TList dedans

  6. #6
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    une TList par d�faut stocke des pointeurs de type void
    il est �galememt possible de stocker d'autres types de pointeurs mais uniquement de m�me type par instance de TList

    TObjectList par contre a la possibilit� de connaitre chaque type de pointeurs stock� ce qui lui permet lors de sa destruction d'appeller l�s destructeurs corrects pour chauqe type

    Cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  7. #7
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Citation Envoy� par DjmSoftware
    la classe TObjectList qui elle permet de travailler avec une liste d'objects de types diff�rents

    la m�thode FindInstanceOf te permet de retrouver dans la liste les objects d'un type d�sir�
    Un exemple utilisant les int* et les AnsiString* ainsi que demand� dans l'�nonc� initial serait le bienvenu.

    Ce principe marche sans doute tr�s bien avec des vrais objets tels que TButton* ou autres faisant intervenir TMetaclass (encore que la documentation ne donne pas d'exemple en sorte que les syntaxes d'acc�s sont difficiles � trouver) mais je doute de la faisabilit� utilisant TObjectList avec aussi des pointeurs vers des AnsiString et des int.

    � bient�t
    Gilles

  8. #8
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    bien vu Gilles,
    en effect la classe TObjectList ne fonctione q'avec des descendants de TObject

    il n'est donc pas possible de m�langer dans une liste des int* et des AnsiString*

    par contre cela fonctionne bien avec des classes descendant de TObject


    Cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

Discussions similaires

  1. Arguments pour pointeur de fonction
    Par MoonDragon dans le forum C++/CLI
    R�ponses: 8
    Dernier message: 11/02/2012, 11h43
  2. equivalent className pour id
    Par StAfX dans le forum G�n�ral JavaScript
    R�ponses: 0
    Dernier message: 10/06/2008, 21h18
  3. utiliser des conteneurs tri�s stl pour pointeurs, utile?
    Par Pacorabanix dans le forum SL & STL
    R�ponses: 13
    Dernier message: 08/12/2007, 16h19
  4. [LG]Besoin d'aide pour pointeurs en "anneaux"
    Par k o D dans le forum Langage
    R�ponses: 4
    Dernier message: 25/10/2004, 19h58
  5. [debutant] correspondance JAVA C++ pour pointeur de fonction
    Par davidoff_tls dans le forum Langage
    R�ponses: 7
    Dernier message: 15/04/2004, 09h13

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