Faire un "Cast" sur une variable!

cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008 - 13 févr. 2008 à 19:50
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 14 févr. 2008 à 17:53
Bonjour, je sais pas si vous allez comprendre ma question! mais elle est assez simple

J'ai une boucle for
et jai 25 variable nommée Case_P1 à Case_P25
Je veux faire le plus simple possible dans ma boucle et éviter la redondance de code et afficher dans les 25 TextBox appelé ECase_1 à ECase_25:
Ainsi je suppose que ca l'aurais été ca :

for (int i =1;i<=25;i++)
{

char *name= ("CaseP" + String(i)).c_str();
double *NV = reinterpret_cast<double*> (name);
E_Case_(i)->Text = String(*NV);
// je veux la variable Case_P(i); pas compliqué non!
//Alors si simple pourtant compliqué
E_Case_(i) = Case_P(i);
}

Et non je ne peux pas utiliser les vecteur et non plus les tableau, car il y a déja du code d'implanté avec ces variable globale!

C++ Programmeur
Xan8ter

18 réponses

CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 1
13 févr. 2008 à 20:23
Je n'ai pas un niveau extreme en C/C++ cependant d'apres ce que je sais , c'est impossible a moin que tes Case_Px aient eté placer en mémoire consecutivement (autrement dit un tableau). Si il ne s'agit que de 25 variables rien ne t'empeche de le faire sans utiliser de i et de boucle.

Si l'informatique été de l'alcool il y aurait des genies partout
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 20:29
char *name= ("CaseP" + String(i)).c_str();
Ça compile ça ?

E_Case_ -> C'est une fonction ?
J'espère que tu n'essais pas de concatener i à E_Case_ à même le code ?
(Pour donner par exemple E_Case_1 E_Case_2 E_Case_3)

Si oui, c'est un bouquin de C++ que tu as besoin.

Et, pour faire équivalent, il n'y a pas d'autre façon que d'utiliser soit un tableau soit une liste (chainée ou non).

C++ (@++)<!--
0
cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008
13 févr. 2008 à 20:35
>>>>E_Case_ -> C'est une fonction ? 
   Réponse : non, c'est comme, E_case.Text c'est du borland builder C++ et non du VC! ou du GCC

>>>>J'espère que tu n'essais pas de concatener i à E_Case_ à même le code ?
(Pour donner par exemple E_Case_1 E_Case_2 E_Case_3)
Réponse : Exactement cela! que je veux dire! mais avec les variable aussi! Case_P(i)

Ca peut arriver ke ca l'existe pas, mais serait bien si yaurais une facons!

C++ Programmeur
Xan8ter
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 20:40
Un tableau ou une liste. Je ne vois pas comment autrement.

C++ (@++)<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008
13 févr. 2008 à 21:52
Ouais, mais si ca l'existe et que quelqu'un le sait, merci de me le faire savoir par ce forum
:)

C++ Programmeur
Xan8ter
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
13 févr. 2008 à 21:53
Avec une macro et une boucle, avec un peu de chance le compilateur transformera ça en liste lui-même :

#define

_ASSIGN(object,member,source,index) object##index->member=source##index

et utilisation :
for(int j=0;j<25;j++) _ASSIGN(E_Case_,Text,Case_P,i);
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
13 févr. 2008 à 21:56
La ligne exacte est :
#define _ASSIGN(object,member,source,index) object##index->member=source##index
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 22:05
Aucune chance que ça fonctionne si index n'est pas une valeur constante.
Ça ne fera que concatener j à E_Case_
Fera E_Case_j E_Case_j E_Case_j E_Case_j etc. etc. etc.

[auteur/PROGEZ/227529.aspx Progez] >> Pour la 3ème fois, NON c'est impossible.

C++ (@++)<!--
0
cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008
13 févr. 2008 à 22:11
wow! faut que j'essaye ca :) thx
Mais le params Text que tu met, c bien un membre comme moi c un TEdit j'inscrit TEdit * a cette place!

C++ Programmeur
Xan8ter
0
cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008
13 févr. 2008 à 22:39
Ouin j'ai essayé, et ca fonctionne pas, tas bien raison, Non c'est impossible! mais y dise kia rien d'impossible en c++ voila!
ca c'est impossible!

Défi!

C++ Programmeur
Xan8ter
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 22:45
C'est vrai qu'il n'y a rien d'impossible à faire avec LES PROGRAMMES faits en C++.
Le code est, comme tout autre langage, limité à sa syntaxe.

C++ (@++)<!--
0
cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008
13 févr. 2008 à 22:51
Haha! ca marche aille thx!!

c'est la solution à l'autre mais regardez bien comment faire!

#define _ASSIGN(object,member,source,index) object##index->member=String(source##index)

        for (int i =0;i <=25;i++)
        {
            int P1 = i ;
            _ASSIGN(Ecase,Text,case,P1);
        }

Mes TextBox s'appelle EcaseP1 <a EcaseP25 et mes variable s'appelle caseP1 à caseP25!

Et ca fonctionne
l'impossible est possible en c++
:P

C++ Programmeur
Xan8ter
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 23:00
Ça ne fonctionne pas pour moi et je ne vois pas du tout comment ça pourrait fonctionner.

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 23:07
Dans ton exemple, tu ne fais que concatener P1 à Ecase et Text et non la valeur de i.
En gros ton code revient à ceci:

for (int i =0;i <=25;i++)
{
    EcaseP1->Text = String(caseP1);
}

C++ (@++)<!--
0
cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008
14 févr. 2008 à 05:31
ouais ta bien raison, ca ne le fait qu'avec la premiere fois! ca ne peut pas car un define cest en constance!
C++ Programmeur
Xan8ter
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
14 févr. 2008 à 14:10
Les #define sont traduit dans le code par le préprocesseur. Cette opération ce fait avant la compilation. Il est donc complètement impossible qu'un #define puisse prendre une variable puisque que son contenue est inconnue (et est, de toute façon, variable).

C++ (@++)<!--
0
cs_Progez Messages postés 8 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 14 février 2008
14 févr. 2008 à 15:31
exactement! mais ca serait plaisant si ca l'existerais, on sauverais du temp parfois ! et des ligne de codes inutiles! de toute facon! jai fait une fonction récursive avec un objet en params au lieu et ca marche tres bien, merci a tous pour votre aide!

C++ Programmer
Xan8ter
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
14 févr. 2008 à 17:53
désolé pour ma part, je n'y étais pas hier soir...
0
Rejoignez-nous