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.
bool __fastcall tryAnsiString(void*);
On peut programmer ainsi cette m�thode.
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
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
Partager