Gestion de fichiers en C#

Résolu
kikibodel Messages postés 16 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 5 juin 2008 - 10 avril 2008 à 17:30
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 11 avril 2008 à 09:26
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

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 avril 2008 à 09:26
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-
3
Rejoignez-nous