,(sender as Tbutton) en c++ ??

,(sender as Tbutton) en c++ ?? - C++ - Programmation

Marsh Posté le 17-06-2002 à 10:00:26    

Bonjour

Reply

Marsh Posté le 17-06-2002 à 10:00:26   

Reply

Marsh Posté le 17-06-2002 à 10:07:35    

:hello:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 10:14:45    

Tu voulais donc nous parler de C++ et de TButton ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 10:32:59    

:eek2:


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 10:33:58    

Toutes mes excuses... :o  
un petit dérapage et voilà que mon message inachevé se retrouve posté..! :pt1cable:  
En fait j'aimerais savoir comment on fait pour transtyper en c++  
 (exemple (sender as TButton) en delphi)
Imaginons que je veuille créer un évement sur le click d'un bouton qui changerait son caption qui serait commun à plusieurs boutons donc généraliser en me servant du Sender.
 
Merci d'avance,

Reply

Marsh Posté le 17-06-2002 à 10:38:04    

Je pense que tu bosse avec C++builder, t'aurais donc un TObject *Sender en entrée:
 

Code :
  1. TButton *button = dynamic_cast<TButton*> (Sender);


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 10:42:29    

Essaie avec la macro "dynamic_cast"


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 10:42:52    

grilled :(


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 11:03:08    

Harkonnen a écrit a écrit :

grilled :(  




HeHe  :D


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 11:07:00    

Merci  :)  
 
dur dur le c++  ;)

Reply

Marsh Posté le 17-06-2002 à 11:07:00   

Reply

Marsh Posté le 17-06-2002 à 11:11:04    

meu non ! c'est les premiers instants qui font le plus mal :)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 11:23:54    

sinon plus facile :
((TButton *)Sender)->.....
 
mais bon c'est peut-être moins propre :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-06-2002 à 11:26:07    

antp a écrit a écrit :

sinon plus facile :
((TButton *)Sender)->.....
 
mais bon c'est peut-être moins propre :o  




 
effectivement c pas propre du tout :D


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 11:27:35    

bah c'est comme ça que Borland le fait dans ses exemples :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-06-2002 à 11:28:42    

surprenant de leur part... Microsoft utilise dynamic_cast dans le MSDN


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 11:34:44    

je retrouve justement pas d'exemples... j'ai peut-être rêvé :heink:
 
enfin sinon en general je fais un truc du genre
 
if Sender is TButton then
  (Sender as TButton).machin
 
ou
 
if Sender is TButton then
  TButton(Sender).machin
 
en Pascal (les deux sont équivalents il me semble), où y a pas d'autres moyen de faire un cast, il lance d'office une exception comme le dynamic cast ; donc c'est vrai qu'en C++ c'est mieux d'utiliser dynamic cast...
j'imagine que le cast bourrin ((TButton *)Sender) ça crashe si c'est pas un TButton ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-06-2002 à 11:36:09    

Harkonnen a écrit a écrit :

surprenant de leur part... Microsoft utilise dynamic_cast dans le MSDN  




Le pb c que le dynamic_cast est bugué dans le VC++ 6 :D vaut mieux faire un static_cast.


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 11:36:52    

:ouch: comment ça buggé ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-06-2002 à 11:38:18    

antp a écrit a écrit :

:ouch: comment ça buggé ?  




 
Bun il marche pas comme il faut. Je connais pas les détails de la chose mais je sais qu'il y a un problème avec.


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 11:39:52    

letoII a écrit a écrit :

 
Le pb c que le dynamic_cast est bugué dans le VC++ 6 :D vaut mieux faire un static_cast.  




j'ai jamais testé avec VC++ 6, mais dans le 7 il ne semble pas y avoir de souci...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 11:40:28    

antp a écrit a écrit :

j'imagine que le cast bourrin ((TButton *)Sender) ça crashe si c'est pas un TButton ?  




sans aucun doute !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 11:47:07    

Harkonnen a écrit a écrit :

 
sans aucun doute !  




 
Non si tu fais pas un appel de méthode et que tu reste dans la mémoire associée à l'objet ça peut passer, mais bon faut avoir vraiment de la chance et de toute menière ça fait n'importe quoi :)


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 12:01:44    

clair... faut avoir vraiment un coup de bol monstre pour que ça fonctionne sans pb...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2002 à 19:25:39    

En quoi ((TButton *)Sender) c'est moins propre et plus bourrin que le dynamic_cast?? :sarcastic:
Histoire que j'approfondisse le sujet, même si à mon niveau les 2 font l'affaire et que donc vous avez déjà résolu mon pb, en vous remerciant.. :jap:

Reply

Marsh Posté le 17-06-2002 à 19:29:50    

Tout simplement dans la norme c++ dynamic_cast est l'oppérateur à utiliser lorsque l'ont cast un pointeur d'une classe mère vers un pointeur d'une classe fille. C'est fait pour.


---------------
Le Tyran
Reply

Marsh Posté le 17-06-2002 à 19:45:00    

mik38 a écrit a écrit :

En quoi ((TButton *)Sender) c'est moins propre et plus bourrin que le dynamic_cast?? :sarcastic:




 
bhen dynamic cast lance une exception si jamais tu ne pouvais pas faire le cast (genre tu caste un TButton en une classe que tu as créée toi-même et qui n'a aucun lien de parenté), alors que le ((TButton *)Sender) bhen ça risque de planter si tu pouvais pas le faire, mais ça plantera pas à tous les coups, donc bug difficile à déceler.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed