[Résolu][DB?-AL] Variables "incrémentales"

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

[Résolu][DB?-AL] Variables "incrémentales"

Message par Aelhan » 29 Mars 2020 08:25

Bonjour,

Tout d'abord, désolé pour le titre du sujet, je n'ai rien trouvé d'explicite à mon problème...
En fait, j'ai des objets dont le nom varie selon leur identifiant (en passant par un xmlReader de traduction), et plutôt que de chercher avec une condition, je voudrais qu'il concatène l'identifiant avec le nom de la variable (vous n'avez rien compris, c'est normal).
Voici en plus explicite, à la place de :

Code : Tout sélectionner

public class AfficheNom : MonoBehaviour
{
    public xmlReader traducteur;
    public Text nomDeLObjet;
    public int ID;
    
    void Update()
	{
		if ( ID == 1 )
		{
		nomDeLObjet.text = traducteur.nom1;
		}
		if ( ID == 2 )
		{
		nomDeLObjet.text = traducteur.nom2;
		}
		if ( ID == 3 )
		{
		nomDeLObjet.text = traducteur.nom3;
		}
		
		.
		.
		.
		        
	}
}
Je voudrais un truc du genre :

Code : Tout sélectionner

public class AfficheNom : MonoBehaviour
{
    public xmlReader traducteur;
    public Text nomDeLObjet;
    public int ID;
    void Update()
    {     
        nomDeLObjet.text = traducteur.nom + ID;
    }
}
Voilà, je pense que c'est plus clair comme ça ;) J'imagine que l'astuce est à mi-chemin entre simple et toute bête mais je ne l'ai pas trouvée...
D'avance, merci !
Dernière édition par Aelhan le 29 Mars 2020 10:36, édité 1 fois.
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [DB?-AL] Variables "incrémentales"

Message par EmileF » 29 Mars 2020 09:38

Salut,

Si j'ai bien compris ton message, la solution est simple:

Code : Tout sélectionner

nomDeLObjet.text = traducteur.nom + ID.ToString();
"ToString()" pour convertir une valeur en texte.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

Re: [DB?-AL] Variables "incrémentales"

Message par Aelhan » 29 Mars 2020 09:45

Je te remercie de ta réponse, mais je l'avais déjà testé, et il me renvoie cette erreur :

error CS1061: 'xmlReader' does not contain a definition for 'nom' and no accessible extension method 'nom' accepting a first argument of type 'xmlReader' could be found (are you missing a using directive or an assembly reference?)


Parce qu'en fait là il va chercher la définition de la variable "nom"(qui n'existe pas) puis ajouter l'ID, mais je voudrais qu'il récupère "nom + ID" dans l'xmlReader

J'ai également essayé ceci :

Code : Tout sélectionner

public class AfficheNom : MonoBehaviour
{
    public xmlReader traducteur;
    public Text nomDeLObjet;
    public int ID;
    private string nomAchercher;
    void Update()
    {     
    	nomAChercher = "nom" + ID.ToString();
        nomDeLObjet.text = traducteur.nomAChercher;
    }
}
Et là, il va chercher la variable "nomAChercher" dans traducteur, mais je voudrais qu'il prenne la valeur de "nomAChercher" déclarée localement...
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [DB?-AL] Variables "incrémentales"

Message par EmileF » 29 Mars 2020 10:01

Là, ça concerne le "xml", ça dépasse mes connaissances

As-tu regardé ça? Je n'ai pas approfondi mais je pense que ça peut t'aider
https://docs.microsoft.com/en-us/dotnet ... r_elements
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

Re: [DB?-AL] Variables "incrémentales"

Message par Aelhan » 29 Mars 2020 10:17

Je vais y jeter un oeil mais je suis étonné qu'il y ait un lien, le fait que ce soit un xmlReader est anecdotique, mon problème aurait été le même si admettons j'avais ceci (j'écris le code en dur dans le fofo, donc sorry pour les erreurs) :
Script1 :

Code : Tout sélectionner

public static class ListeDesNoms
{
	public static string nom1 = "Le premier nom";
	public static string nom2 = "Le deuxième nom";
	public static string nom3 = "Le troisième nom";
	.
	.
	.
}
et en script2 soit le truc pas opti :

Code : Tout sélectionner

public class AfficheNom : MonoBehaviour
{
    public Text nomDeLObjet;
    public int ID;
    
    void Update()
	{
		if ( ID == 1 )
		{
		nomDeLObjet.text = ListeDesNoms.nom1;
		}
		if ( ID == 2 )
		{
		nomDeLObjet.text = ListeDesNoms.nom2;
		}
		if ( ID == 3 )
		{
		nomDeLObjet.text = ListeDesNoms.nom3;
		}
		
		.
		.
		.
		        
	}
}
Soit une supposition d'opti qui ne fonctionne pas :

Code : Tout sélectionner

public class AfficheNom : MonoBehaviour
{
    public Text nomDeLObjet;
    public int ID;
    private string nomAChercher;
    
    void Update()
	{
	 nomDeLObjet.text = ListeDesNoms.nom + ID; //erreur
	 
	 nomDeLObjet.text = ListeDesNoms.nom + ID.ToString(); //encore erreur
	 
    	nomAChercher = "nom" + ID.ToString();
        nomDeLObjet.text = ListeDesNoms.nomAChercher; //toujours erreur

	}
}

Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB?-AL] Variables "incrémentales"

Message par boubouk50 » 29 Mars 2020 10:26

Salut,

Je vais faire court, tu ne peux pas "incrémenter" un nom de variable.
Tu peux par contre utiliser un tableau pour cela:

Code : Tout sélectionner

public string[] noms = new string[4]{"Roberta-Micheline", "Georges-Mattéo", "Ernest-Jordan", "Kévin-André"};
...
nomDeLObjet.text =  noms[ID];
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Aelhan
Messages : 124
Inscription : 11 Déc 2019 23:00

Re: [DB?-AL] Variables "incrémentales"

Message par Aelhan » 29 Mars 2020 10:35

ok, donc dans mon cas, je devrais faire :

Code : Tout sélectionner

public string nom[n]{traducteur.nom1, traducteur.nom2, ... , traducteur.nomN}
Ce qui serait quand même un peu plus opti que les ifs à répétition je pense.

Je te remercie ! (quand même dommage qu'on ne puisse pas le faire, je suis déçu déçu déçu !)
Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB?-AL] Variables "incrémentales"

Message par boubouk50 » 29 Mars 2020 10:53

Aelhan a écrit :
29 Mars 2020 10:35
quand même dommage qu'on ne puisse pas le faire, je suis déçu déçu déçu !
Cela ne se fait pas et pour de bonnes raisons. Les tableaux/Listes sont justement faits pour ça.
Le problème étant plutôt ta logique concernant l'utilisation de variables. Mais au final, cela revient au même. Tu stockes tes noms dans un tableau et y accède directement via l'ID.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »