Initialisation variable par le code dans ma classe form :) [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013
-
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013
-
Boujour,

Une question peut être stupide, mais je suis vraiment novice ... Enfin presque !

Est il possible lors de l'exécution de mon MDI, de changer l'instance d'une variable dans la classe de mon MDI ? je m'explique par l'exemple :

namespace Maquette
{
    public partial class Connect : Form
    {
        public string Source =      "C:/Users/usuario/Documents/Pfe/Pfe/Programme/Maquette/Maquette/data.mdb";
        public Connect()
        {
//ici reinstancer ma variable pour qu'à la prochaine exécution par exemple public string Source = "C:/Users/usuario/Documents";
        }


Merci ;)

15 réponses

Messages postés
15364
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 janvier 2021
499
Normalement

string chemin = @"Rep1\test.txt";

pointera vers test.txt dans le dossier Rep1 contenu dans le même répertoire que ton exe.
Si tu as un doute il y a Application.StartUpPath qui retourne le chemin du répertoire de l'ex.

Whismeril
Messages postés
15364
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 janvier 2021
499
Bonjour, si l'idée est que la première instance de ce formulaire ouvre
"C:/Users/usuario/Documents/Pfe/Pfe/Programme/Maquette/Maquette/data.mdb";
et que la deuxième ouvre "C:/Users/usuario/Documents".

Tu peux utiliser une variable de classe, tu l'inities avec le premier string et dès que tu as fait le traitement tu lui affectes le second.
Pour déclarer une variable de classe, il suffit de la déclarer static:

Cet exemple compte le nombre de personnes crées:

class Personne
    {
      private string nom;
      private string prenom;
      private int age;
      private static int nbPersonne = 0;

      public ClsPersonne(string nom, string prenom, int age)
      {
        this.nom = nom;
        this.prenom = prenom;
        this.age = age;
        nbPersonne++;
      }

....
Personne p1 = new Personne("Martin","Henri",32);
      p2.Affiche();

Personne p2 = new Personne("Dupont","Pierre",27);
      p2.Affiche();
Console.WriteLine("nous avons crée {0} personnes",Personne.GetNbPersonne());






Whismeril
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Merci Whismeril,

mais l'idée est plutôt de changer la valeur de la variable en dur.
C'est à dire que lorsque s'ouvre le prog. pour la 1ere fois la valeur vaut
Source = "C:/Users/usuario/Documents/Pfe/Pfe/Programme/Maquette/Maquette/data.mdb";
et que si je decide de changer de chemin d'acces a la base de données, le prog garde en mémoire le nouveau chemin d'accès et change la valeur de la variable pour qu'à la prochaine ouverture du programme je n'ai pas besoin de changer le chemin d'accès.

Merci de ta réponse ;) et désolé si je me suis mal exprimé!
Messages postés
15364
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 janvier 2021
499
Ha dans ce cas il faut stocker ton info quelque part, il y a le fichier de configuration : app.confing de mémoire, sinon un fichier XML, csv, une base de données, le registre.


Whismeril
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Merci pour ta réponse ;) J'avance !
Seulement je reste un peu perdu, sans rentrer dans les détails, j'ai inséré une paire key value dans la balise configuration de mon fichier config. Quand j'essaye d'y accéder via ConfigurationManager.AppSetting["Ma_clé"], j'arrive à récupérer la valeur. Mais j'aimerai mettre à jour cette valeur et lorsque j'essaye avec les commandes remove puis add, il me dit que le fichier config est en lecture seule ...
Aurais tu une solution ? merci !
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
Une petite recherche et paf : Lien

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Merci ....
Mais cela ne résoud pas mon problème car la clé est modifiée uniquement au niveau du fichier app.config du répertoire debug.
J'aurais besoin de le modifier dans ma solution ...
Messages postés
15364
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 janvier 2021
499
Bonjour dans ce cas, écrit un fichier à part.

Whismeril
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Merci ....
Mais cela ne résoud pas mon problème car la clé est modifiée uniquement au niveau du fichier app.config du répertoire debug.
J'aurais besoin de le modifier dans ma solution ...
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Je ne sais pas pourquoi ca má posté le même message. Merci de ta
réponse whismeril, j'avoue ne pas savoir ce à quoi tu te réfère ... mais je vais chercher.
Merci
Messages postés
15364
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 janvier 2021
499
ET bien, comme je te l'ai indiqué dans mon deuxième message, tu peux te faire un fichier texte, un csv, un xml... dans lequel tu enregistre ton chemin. Ce fichier tu peux l'enregistrer dans le répertoire de ton application (pendant test tes tests il sera dans le bin, comme app.config).

Tu peux aussi créer une clé de base de registre.


Whismeril
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
"J'aurais besoin de le modifier dans ma solution".

Non ! En théorie, quand tu a développé un programme, il ne doit plus du tout être lié à la solution. Les fichiers de la solution ne doivent pas être modifiés au runtime (lors de l'exécution de ton programme).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Ok je vais mettre en résolu, car je me rend compte que j'ai les éléments pour poursuivre. Je vais tester avec le fichier text.

@Krimog : J'ai tester en utilisant le exe généré de modifier app.config, sans résultat ... Essayons avec le fichier text ^^

Merci à vous 2.
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Ah, avant de mettre en résolu, quelqu'un pourrait il m'indiqué comment utiliser un chemin relatif à la racine de mon projet , afin qu'ilsoit valable dans l'exe généré et le debug.
J'ai essayé plusieurs solutions sans succès ...
Messages postés
18
Date d'inscription
mercredi 9 septembre 2009
Statut
Membre
Dernière intervention
18 mai 2013

Le chemin avec @ ne onctionne pas ... je ne sais pas pourquoi mais Startup nickel ! Merci encore ;) Résolu !