Gestion de fichiers en C#

Résolu
Signaler
Messages postés
16
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
5 juin 2008
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
-
Bonjour,

Je suis sur un projet pour lequel je dois trouver un programme en C# qui récupère des données situées dans différents fichiers du disque dur d'une machine afin de toutes les réécrire dans une seule et même page.
Seulement voila, j'ai fait le programme et les données s'affichent en mode console mais lorsque je les réécrit dans un fichier texte, il y inscrit la valeur 0 ou " " pour chacune des variables (suivant leur type : double ou string).

En remerciant d'avance celles et ceux qui voudraient bien me donner un petit coup de main, voici mon programme après l'avoir simplifié :

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Data;
using System.Data.OleDb;
using System.Xml;
using System.Threading;

namespace Projet
{
    class EtatActuel
    {
        public DateTime LaDate = DateTime.Now;
        public double TempExt;
        public string tendance;
       
    }
   
    class Program
    {
        static void ecrire(EtatActuel etat)
        {
            CultureInfo ci = new CultureInfo("en-US");                 
            StreamWriter sw = new StreamWriter(@"C:\Documents and Settings\Propriétaire\Bureau\finaldoc.txt");
            sw.WriteLine(etat.tendance);
            sw.WriteLine(etat.TempExt);
            sw.Close();            
           
        }                    

        static void Hw(EtatActuel etat)
        {
             string[] Recherche1 = { "number = 1" };
             string[] Recherche2 = { "[outdoor_temperature]"};          
            CultureInfo ci = new CultureInfo("en-US");          
            StreamReader sr = new StreamReader(@"C:\Documents and Settings\Propriétaire\Bureau\ER3A07-60\currdat.lst");
            String ligne;
            do
            {       
                ligne = sr.ReadLine();
                if (ligne == Recherche1[0])
                {                  
                    string[] morceaux = ligne.Split('=');
                    int ind = Convert.ToInt16(morceaux[1]);
                    if (ind == 0)
                    {
                        etat.tendance = "constant";
                    }
                    else if (ind == 1)
                    {
                        etat.tendance = "anticyclonique";
                    }
                    else if (ind == 2)
                    {
                        etat.tendance = "depression";
                    }
                    else
                    {
                        etat.tendance = "non valable";
                    }

                    Console.WriteLine("tendance: \t" + etat.tendance);
                                     
                }
                if (ligne == Recherche2[0])
                {
                    ligne = sr.ReadLine();
                    string[] morceaux = ligne.Split('"');
                    etat.TempExt = Convert.ToDouble(morceaux[1], ci);
                    Console.WriteLine("Température extérieure: \t" + etat.TempExt + "°C");
                                     
                }                         

            }
            while (true);                 

        }      
        static void HitTimer(object state)
        {
            EtatActuel etat = new EtatActuel();
            Hw(etat);
            ecrire(etat);

        }

        public static void Main(string[] args)
        {          
            Timer t = new Timer(new TimerCallback(HitTimer));
            t.Change(0,100000);  
            {
                Console.ReadKey();
            }

        }
        }
    }

Merci d'avance.

Kikibodel.

1 réponse

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
58
Bonjour,

   static void HitTimer(object state)
        {
            EtatActuel etat = new EtatActuel();
            Hw(etat);
            ecrire(etat);
        }

EtatActuel est initialié, la valeur est vide pour le string, 0 pour le double.
Logique.... non?

   static void HitTimer(object state)
        {
            EtatActuel etat = new EtatActuel();
            etat.TempExt = ...
            etat.tendance = ....
            Hw(etat);
            ecrire(etat);
        }

Fonctionnera certainemetn bien mieux...

<hr />
-My Blog-