IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Modifier/remplacer une variable Virtual c#


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Par défaut Modifier/remplacer une variable Virtual c#
    Bonjour, je reviens demander de l'aide pour un programme.
    Pour le moment tout ce passe bien sauf que j'ai un problème :

    J'aimerai pourvoir modifier une variable déjà existante par une autre et que lorsque l'on quitte le programme cela soir enregistré, c'est a dire que lorsque l'on rouvre on retrouve la variable modifier.

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void musique_Click(object sender, EventArgs e)
            {
                var Name1 = "moi new2.wav";
                var emplacement = @"C:\xml sharemu";
                System.Diagnostics.ProcessStartInfo myInfo =
                new System.Diagnostics.ProcessStartInfo();
                myInfo.FileName = Name1;
                myInfo.WorkingDirectory = emplacement;      // mettre un @ avant de rentrer le chemin d'access
                System.Diagnostics.Process.Start(myInfo);
                return;
     
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
       private void Parcourir2_Click(object sender, EventArgs e)
            {
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.CheckPathExists = true;
                dlg.CheckFileExists = true;
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    // code si l'utilisateur a bien sélectionner un fichier
                    textBox1.Text = dlg.FileName;
     
                }
     
     
     
     
            }

    lorsque dans le "parcourir" on sélectionne un fichier il faut que sa destination remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var emplacement = @"C:\xml sharemu"
    et que juste le nom du fichier remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Name1 = "moi new2.wav";
    J'ai testé "Name1.Replace......" Mais il n'appartienne pas à la même "phrase" donc il trouve que la variable Name1 est inexistante.

    Ensuite il faut que la nouvelle variable soit la même à chaque démarrage du programme.

    Merci.

  2. #2
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Par défaut
    Je n'ai aps vraiment compris ce que tu cherches à faire, mais je ferais une remarque sur le type var que tu as choisi.

    Le C# est un langage fortement typé, il ne faut pas se laisser parasiter par ce type var (en n'est pas en PHP !!!). Dans ton cas, cela semble être une variable de type "string"... A moins que tu aies besoin de changer de type à la compilation !!!

    Je sais que celà ne rpond pas à ta question... Personnellement je ne la trouve pas claire.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Par défaut
    J'ai mit "var" pour tester, mais sinon oui c'est une variable "string" j'essayerai de reposer la question le plus clairement possible.

    Mais enfaite j'aimerai remplacer une variable par le nom du fichier (sur name) et l'emplacement du fichier (sur emplacement) lorsque l'on clique sur un fichier avec le bouton parcourir.

    Le problème c'est que je n'arrive pas à modifier une variable car elle n'est pas sur le même "bouton" et surtout que la variable modifier soit enregistré ( lorsque l'on quitte le programme la variable est changé).

  4. #4
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Le problème c'est que je n'arrive pas à modifier une variable car elle n'est pas sur le même "bouton"
    ATTENTION ! La portée d'une variable déclarée dans une fonction ne dépasse pas la fonction !!!
    Si tu veux garder tes valeurs en mémoire, il te faut déclarer tes "variables" comme propriétés de ton objet.

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Par défaut
    Merci de la réponse, c'est ce que j'avais penser à faire, et c'est possible que la variable soit prit depuis un document texte à coter du fichier ? et que le fichier se sauvegarde à chaque fois ?

    Car j'aimerais que les modifications des variable soit enregistré lorsque l'on quitte le programme.

  6. #6
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Car j'aimerais que les modifications des variable soit enregistré lorsque l'on quitte le programme.
    Ben pour ça, t'as 36 manières de faire...
    Soit tu lis et écris dans un fichier à l'aide de StreamReader et StraemWriter
    Soit tu utilises les fichiers config
    Soit tu fais de la sérialisation
    Soit tu vas boire une bière
    Soit tu prends des vacances
    Chercher un peu dans les docs

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Par défaut
    Justement en cherchant dans les docs j'ai trouvé StreamWriter mais au lieu de me le marquer en bleu ciel il me le note en noire et me dit l'erreur suivante :


    Erreur 1 Le type ou le nom d'espace de noms 'StreamWriter' est introuvable (une directive using ou une référence d'assembly est-elle manquante*?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
            private void Parcourir2_Click_1(object sender, EventArgs e)
            {
                // on sauvegarde la boîte de saisie dans un fichier texte
     // on paramètre la boîte de dialogue savefileDialog1
     saveFileDialog1.InitialDirectory = Application.ExecutablePath;
     saveFileDialog1.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*";
     saveFileDialog1.FilterIndex = 0;
     // on affiche la boîte de dialogue et on récupère son résultat
     if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
     // on récupère le nom du fichier
     string nomFichier = saveFileDialog1.FileName;
     StreamWriter fichier = null;
     try {
     // on ouvre le fichier en écriture
     fichier = new StreamWriter(nomFichier);
    // on écrit le texte dedans
     fichier.Write(textBoxLignes.Text);
     } catch (Exception ex) {
     // problème
     MessageBox.Show("Problème à l'écriture du fichier (" +
     ex.Message + ")", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
     return;
     } finally {
     // on ferme le fichier
     if (fichier != null) {
     fichier.Dispose();

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Par défaut
    SI tu fais un clic droit / resolve sur ton streamwriter tu n'as pas une proposition d'jaout de using?

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    StreamWriter et StreamReader sont tous deux situé dans le namespace
    System.IO...

    il te faut donc intégrer la clause

    en début de programme ou écrire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    ...
    try
    {
    	using (System.IO.StreamWriter fichier = new StreamWriter(nomFichier)
    	{
    		...
    	}
    }
    catch (Exception ex)
    {
    	...
    }
    ...
    Ici le using est utilisé pour s'assurer que l'objet StreamWriter est bien "Disposed" après utilisation, surtout si le programme ne quitte pas aussitot après... voir libération déterministe des objets, et tout particulièrement des objets avec des ressources non managées.
    cela t'évite la clause finally avec le fichier.Dispose()...

    Ici quelque soit les circonstances, si l'exécution se trouve dans le bloc du using... l'objet référencé par fichier sera Dispose().
    Le try catch ne sert finalement qu'a catcher une exception à la création du fichier, et dans ce cas, tu ne dispose pas et ne test pas, car s'il y a besoin de le faire, il le fera tout seul !
    C'est le même principe que l'écriture
    lock (obj) { ... } où tout le code dans le bloc est synchronisé sur l'objet obj...


    Lorsqu'on utilise un langage comme C# il vaut mieux parfois utiliser les constructions syntaxiques qui simplifie l'écriture car tu gagne nettement en lisibilité.

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Par défaut
    Merci, c'est vrai que pour le moment c'est le vrai Bowdel dans mes codes...

    Sinon je crois que je touche au bute, et j'aimerai juste savoir comment associer une variable à ce que le logiciel à lu,

    Est-il possible de lire que la "ligne 1" d'un fichier ".txt" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     private void musique_Click(object sender, EventArgs e)
            {
     
     
     
                using (StreamReader sr = new StreamReader("TestFile.txt")) 
     
                    string Name = sr.ReadLine() ;
                    string emplacement = @"C:\xml sharemu";
                    System.Diagnostics.ProcessStartInfo myInfo =
                    new System.Diagnostics.ProcessStartInfo();
                    myInfo.FileName = Name;
                    myInfo.WorkingDirectory = emplacement;      // mettre un @ avant de rentrer le chemin d'access
                    System.Diagnostics.Process.Start(myInfo);
     
     
                }
    J'aimerai associé "string Name" à ce que le programme à lu (à la ligne 1 si possible). Voila merci.

  11. #11
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Le premier ReadLine te retourne la première ligne de ton fichier.
    Après, chaque autre ReadLine te retourne la ligne suivante ...
    Moi ce que j'aime bien c'est le File.ReadAllLines (static) qui te retourne un tableau avec toutes les lignes de ton fichier.
    Après tu parcoure ton tableau comme tu veux...

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Par défaut
    Merci (je pourrais avoir un exemple pour lire la ligne 3 par exemple ?)

    Donc il me reste un dernier truc, associer la variable à ce que le programme à lu.

    Sur le code là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    {
     
     
     
                using (StreamReader sr = new StreamReader("TestFile.txt")) 
     
     
                    string Name = sr.ReadLine() ;
                    string emplacement = @"C:\xml sharemu";
                    System.Diagnostics.ProcessStartInfo myInfo =
                    new System.Diagnostics.ProcessStartInfo();
                    myInfo.FileName = Name;
                    myInfo.WorkingDirectory = emplacement;      // mettre un @ avant de rentrer le chemin d'access
                    System.Diagnostics.Process.Start(myInfo);
     
     
                }
    J'ai deux erreurs, que j'arrive à comprendre mais pas a résoudre :

    Erreur 1 L'instruction incorporée ne peut pas être une déclaration ni une instruction étiquetée
    Erreur 2 Conflit entre 'Name' et la déclaration 'System.Windows.Forms.Control.Name'
    Je pense qu'apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     using (StreamReader sr = new StreamReader("TestFile.txt"))
    Il faut que je note quelques choses mais je ne sais pas quoi.

    Ce que je veux juste c'est ce qui à été lu devienne une variable c'est pour ça que j'avais fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string Name = sr.ReadLine() ;
    Mais apparament ça fonctionne pas et le programme ne trouve pas l'objet...

  13. #13
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Je ne voudrais pas trop te chiffonner mais si j'étais toi, je prendrais un bon bouquin pour apprendre un peu les bases....
    Problème avec "Name" : ta fonction se trouve apparemment dans un objet (Form peut-être) qui contient une propriété Name. Tu ne peux donc pas déclarer une variable Name dans cet objet.

    Pour lire un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    string chaine;
    using (StreamReader sr = new StreamReader("TestFile.txt"))
    {
      while((chaine = sr.ReadLine()) != null)
      {
        //faire qqchose avec ce que tu as dans chaine
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (chaine = sr.ReadLine())
    devient null si ReadLine n'a plus rien à retourner. C'est pas forcément simple à comprendre. Alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    using (StreamReader sr = new StreamReader("TestFile.txt"))
    {
      while(!sr.EndOfStream)
      {
        chaine = sr.ReadLine();
        //faire qqchose avec ce que tu as dans chaine
        //dans la prochaine itération, ReadLine te retourne la ligne suivante de ton fichier
      }
    }
    Si tu as besoin de tout ton fichier en mémoire et s'il n'est pas trop grand tu peux aussi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string[] Lignes;
    Lignes = File.ReadAllLines("TestFile.txt");
    ou 
    Lignes = File.ReadAllLines("TestFile.txt", Encoding.Default);
    //ce qui est mieux pour le respect de l'encodage d'un fichier texte classique
    Le tableau Lignes contient toutes les lignes de ton fichier.

    Mais bon, je suis entrain de réécrire un bouquin ou un site qui existe déjà....

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Dans l'absolu il peut tout à fait définir une propriété Name, mais il devra indiquer qu'elle couvre le prototype hérité avec le mot clé new...

    c'est pas propre, et avec la liaison dynamique ça va lui pourrir la vie, mais il en a tout à fait le droit

  15. #15
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Tout a fait d'accord avec toi. Mais vu le contexte, je pense qu'il ne faut pas partir dans de telles subtilités...

  16. #16
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 193
    Par défaut
    Yeaaa cinemania : Nancy !

    Bon j'ai réussie à trouver en lisant un manuel (j'apprends petit à petit).

    Mon seul problème qui persiste c'est de lié deux formulaire. Pour que la form1 lise ce qu'il y a de marqué sur la le textbox de la form2.

    Voila bonne journée à vous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2007, 16h30
  2. remplacer une variable par sa valeur
    Par patbeautifulday1 dans le forum Access
    Réponses: 3
    Dernier message: 05/01/2007, 17h06
  3. Réponses: 8
    Dernier message: 21/12/2006, 18h41
  4. Réponses: 1
    Dernier message: 16/11/2006, 13h33
  5. valeur d'un champ text modifié par une variable en parametre
    Par klimero dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 21/04/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo