Coolpix08
Messages postés150Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention21 décembre 2007
-
7 juin 2006 à 15:20
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 2007
-
13 juin 2006 à 13:01
Bon voila...Je suis un peu ambitieux mais bon je tente kememe..
Matos : C#
J'aimerais savoir si il y a une fonction système qui permet de récupérer une variable grâce à son nom en String???
Dacord je vous fait un pti exemple...meme pt 2...
Appelons cette fonction mystérieuse FctMagique
avec comme prototype : Object FctMagique(String)
int a=5;
......
et dans le code par exemple :
((int)FctMagique("a"))=12;
Et un autre exemple ca fait pas de mal...
Label Label1;
Label Label2;
Label Label3;
for (int i=1;i<4;i++) ((Label)FctMagique("Label"+i.ToString())).Text="Ceci est le Label " + i.ToString();
Voila je crois que le dernier est un peu plus parlant...
Je vais pas dire qu'une solution serait vital mais.....vraiment presque...car j'ai environ 40 Labels.....alors imaginez...
Ah oui derniere remarque...Bien sur la solution serait de passer carrement par un Tableau d'Object mais vu les circonstances je ne peux pas alors c'est pour ca qu'il me faudrait cette fonction magique
Il n'y a vraiment que cette solution pour me sauver la vie alors...si un expert passe par la...
Un grand merci, voir meme une ola pour celui qui trouvera la solution !!!
A voir également:
Expert Système : Récupérer Variable par une String
for (int i=1;i<=4;i++) ((Label)this.FindControl("Label" + i.ToString())).Text="coucou cest le label " + i.ToString();
...
Par contre pour avoir la liste je galere encore un peu...
///////////////////////////////////////
Par contre ca ma donner une idée pour cette fonction magique!Surtt pour la version C++!
Etant donner que la ce sont des classes imbriqués ce sont forcement des listes de types à l'intérieur.
Donc il faut forcement les stocker et faire la correspondance entre les noms et le control
DONC! Ben comme en C++ il n'y a que des types primitifs, ben pour que ca marche il suffit de créer la meme chose quand C# avec les controls
Cest a dire un tableau qui fait la correspondance entre les nom(string) et les variables (Pointeur)
Du style :
List<String,void*> LstCrtl =new List<String,void*>;
int a=5;
String huhu="je suis la !";
...
LstCrtl.add("a",&a);
LstCrtl.add("huhu",&huhu);
...etc
enfin ce n'est qu'une idée apres pour le code, il faut poffiner un peu...
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 7 juin 2006 à 16:15
Salut,
Une petite boucle sur tous les contrôles de ta feuille permet d'en
extraire les labels (à condition, dans l'exemple ci-dessous, que leurs
noms soient label1, label2, label3, ... )
String indice = "";
foreach (Control ctrl in this.Controls)
{
if (ctrl.Name.Substring(0, 5) == "label")
{
indice = ctrl.Name.Substring(5);
ctrl.Text = "Je m'appelle Label" + indice;
}
}
Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Coolpix08
Messages postés150Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention21 décembre 20072 7 juin 2006 à 16:28
Arf!!
Presque!
ouais c'est ca que je veux!
C'est vrai que je n'y avait pas penser étend donnée que je suis dans une classe qui hérite et qui hérite encore.........
Mais le problème est que je suis en ASP.NET
du coup...yorai moyen de l'adapter??
Car dans le type control, il n'y a pas de methode name, et en fesant la liste je n'est rien trouver...
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 7 juin 2006 à 16:38
Alors, tente ta question sur le forum d'
ASPFr.com
Là, je bloque aussi.
Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 20073 13 juin 2006 à 13:01
Bonjour à tous,
J'arrive en retard, juste pour indiquer qu'il existe un moyen relativement simple de récupérer la valeur d'une variable à partir de son nom en utilisant la réflection :
<hr />
// myType est le type dans lequel la variable recherchée est définie
// (obtenu par typeof() ou .GetType())
FieldInfo field = myType.GetField("variableName", BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (field != null)
{
// Si le champ est statique
object val = field.GetValue(null);
// Si c'est une variable d'instance, alors il faut passer en paramètre
// une instance du type myType
object val = field.GetValue(instanceOfMyType);
}
else
{
// champ non trouvé
}
<hr />Cela ne permet bien sûr de récupérer que les variables définies dans un type (un champ dans une classe ou une structure). Les variables locales (définies dans une méthode) ne peuvent pas être récupérées de cette manière. En fait, je ne pense pas qu'il soit possible de récupérer la valeur d'une variable locale à partir de son nom, dans la mesure où le nom des variables locales n'est pas stocké dans le code MSIL (elles sont référencées par leur index).