none
read a Textfile Value and make a Graphic in C# RRS feed

  • Allgemeine Diskussion

  • Hello, I must carry out a program in My problem major is that I absolutely never made similar. The objective of my program is to recover certain present data in a file text, and then to trace a chart of these data. I work with Microsoft Visual Studio 2008.
    the values are those located higher in my precedent post, I must thus save all the values recorded under Flr1 (38.9 ..... 39.0) and Flr2 (21.8….21.8) so on up to the Spg3 values the same scenario, and on the axis of the abcisses one will have the date and the time while on the y-axis will be to represent the temperatures (the values record under Flr1 ....... Spg3)
    Thank you for your assistance and good day
    Zeitpunkt; Flr1; Flr2; Flr3; Flr4; Flr5; Flr6; Flr7; Flr8; Flr9; Flr10;Aus1;Aus2;Aus3;Aus4;Aus5;Aus6;Aus7;Aus8;Spg1;Spg2;Spg3;
    10.05.2011 17:04:20; 38,9; 21,8; 61,9; 10,4; 0,0; 24,6; 0,0; 0,0; -45,6; 8,7; 0; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    10.05.2011 17:04:30; 38,8; 21,8; 61,9; 10,4; 0,0; 24,7; 0,0; 0,0; -45,7; 8,6; 0; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    10.05.2011 17:04:40; 38,9; 21,8; 61,9; 10,5; 0,0; 24,6; 0,0; 0,0; -45,6; 8,7;100; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    10.05.2011 17:04:50; 38,8; 21,8; 61,9; 10,4; 0,0; 24,6; 0,0; 0,0; -45,7; 8,6; 0; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    10.05.2011 17:05:00; 38,9; 21,8; 61,9; 10,4; 0,0; 24,6; 0,0; 0,0; -45,7; 8,6; 0; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    10.05.2011 17:05:10; 38,9; 21,9; 61,9; 10,5; 0,0; 24,7; 0,0; 0,0; -45,6; 8,7;100; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    10.05.2011 17:05:20; 38,9; 21,8; 61,9; 10,5; 0,0; 24,6; 0,0; 0,0; -45,6; 8,7; 0; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    10.05.2011 17:05:30; 39,0; 21,8; 61,9; 10,6; 0,0; 24,6; 0,0; 0,0; -45,5; 8,7; 0; 0; 0; 0; 0; 0; 0;100; 0,00; 0,00; 0,00;
    Donnerstag, 26. Mai 2011 12:28

Alle Antworten

  • Hallo Rminator,

    dies ist ein deutsch Sprachiges Forum! ;)

    Ich würde die einzelenen CSV-Datensätze in ein Objekt packen. Dazu würde ich eine Klasse Schreiben, deren Properties genau die einzelenen Spalten eine CSV-Datensatzes repräsentieren. Anschliessend kannst du die Werte (in einem Objekt verpackt) an ein anderes API weitergeben.

    Leider hast du keinen Ansatzpunkt genannt, wo es bei dir hängt. Ich hoffe aber, es hilft dir trotzdem erstmal weiter. Wenn du noch Fragen/Ängste/Sorgen/Nöte hast, werde ich dir gerne weiterhelfen ;)

    Viele Grüße
    Holger M. Rößler


    Viele Grüße Holger M. Rößler ++++++++++++++++++++++++++++++++++++++++++++++++++ Kaum macht man es richtig, schon funktioniert es ++++++++++++++++++++++++++++++++++++++++++++++++++
    Donnerstag, 26. Mai 2011 12:38
  • oupppppppppps Sorry erstmal dass, ich auf Englisch geschrieben habe, was ich mache möchte ist erstmal die Daten die Reihe nach durchlesen,und die nach mal speicher Zb alle Daten unter Flr1 sollte mal gespeichert werden und als zukünftige Punkte für die kurve benutzt werden. Das selbe sollte auch bis Spg3 gemacht werden, mein Problem erstmal ist wie tue ich die werte ansortieren,und die mal in ein Array für eine weiterverarbeitung speicher???? und wie nutzte ich die gespeicherte Date um eine Courve zu erstellen.mein Code bis Jetzt hat nicht gut funktioniert, und jede vorschläge sind mir Wert

    anbei mein code  für Daten sortieren

            private void button3_Click(object sender, EventArgs e)
            {
                StreamReader r = new StreamReader(OpenFD.FileName);
                StreamReader P = new StreamReader(OpenFD.FileName);
     
                String Line = r.ReadLine();
                int Nbline = -1;
                int NbRaw = 0;
                int header = 15;
     
                do
                    {
                        Line = r.ReadLine();
                        Nbline +=1;
                    }
                while(Line != null);
     
                String[] Nom_Tableau1 = new String[Nbline];
    
                do
                    {
                        for (int h = 0; h < Nbline; h++)
                        {
                            Nom_Tableau1[h] = P.ReadLine();
                            NbRaw = Nom_Tableau1[h].Split(' ',';').Length;
                            MessageBox.Show(NbRaw.ToString());
                        }
     
                        for (int h = 0; h < Nbline-header; h++)
                        {
                            Nom_Tableau1[h] = Nom_Tableau1[h + header];
                            MessageBox.Show(Nom_Tableau1[h]);
                        }
     
                        for(int h = 0; h< Nbline- header; h++)
                        {
                            String[,] Data = new String[Nbline, NbRaw];
                            for (int a = 0; a < NbRaw; a++)
                            {
                                MessageBox.Show(Data[h, a]);
                                Data[h, a] = Nom_Tableau1[a];
                                //listBox1.Items.Add(Data[i, a]);//listBox1.Items.Add(Nom_Tableau1[a]));  
                            }
                            //MessageBox.Show(Data[i, a].ToString());  
                        } 
                    }
                while (Line != null); 
            }

    Donnerstag, 26. Mai 2011 13:00
  • Also ich bin mir nicht ganz sicher, was du vorhast, aber wenn du die oben gegebene Textdatei auslesen willst, könnte dir folgender ungetesteter Code als Ansatz helfen...

    Ich habe eine Klasse, die mir eine Kurve abbildet, angelegt:

    class Curve
     {
      public DateTime date;
      public ArrayList flr;
      public ArrayList aus;
      public ArrayList spg;
    
      public Curve() { }
     }
    

    Folgendes steht dann in meiner Main der Konsolenanwendung:

    ArrayList curves = new ArrayList();
       Curve c = null;
       using (StreamReader sr = new StreamReader("C:\\PATH"))
       {
        string line = sr.ReadLine();
        int countFlr = 0, countAus = 0, countSpg = 0;
        do
        {
         string[] splitted = line.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
         if (line.Contains("Zeitpunkt"))
         {
          foreach (string s in splitted)
          {
           if (s.Contains("Flr")) countFlr++;
           else if (s.Contains("Aus")) countAus++;
           else if (s.Contains("Spg")) countSpg++;
          }
         }
         else
         {
          c = new Curve();
          for (int i = 0; i < countFlr; i++) c.flr.Add(double.Parse(splitted[i + 1]));
          for (int i = 0; i < countAus; i++) c.aus.Add(int.Parse(splitted[i + 1 + countFlr]));
          for (int i = 0; i < countSpg; i++) c.spg.Add(double.Parse(splitted[i + 1 + countFlr + countAus]));
          string[] d = splitted[0].Split(new string[] { ".", " ", ":" }, StringSplitOptions.RemoveEmptyEntries);
          c.date = new DateTime(int.Parse(d[2]), int.Parse(d[1]), int.Parse(d[0]), int.Parse(d[3]), int.Parse(d[4]), int.Parse(d[5]));
          curves.Add(c);
         }
    
         line = sr.ReadLine();
        } while (line != null);
       }
    

    Wirst du sicher noch anpassen müssen, aber von der Grundidee könnte es hinreichen.

    Montag, 18. Juli 2011 09:26
  • CSV-Reader in C# und .NET allgemein gibt es hier: CSV-Parser C#. Dort gibt es lauter CSV-Parser. Das CSV-Format ist nämlich komplizierter, als man denkt.
    Sonntag, 11. September 2011 21:49
  • Hallo,

    von der  Grundidee ist das Parsen einer CSV-Datei relativ einfach. Aber die Tücke liegt bei CSV im Detail. So kann es z.B. sein, dass innerhalb eines "-Paares sowohl ein oder mehrere CRLF als auch ein oder mehrere Trennzeichen vorkommen dürfen, an denen nicht gesplittet werden darf. Hier musst du mit Rekursionen arbeiten. Mit Schleifen ist das nicht mehr wirklich Sinnvoll lösbar.

    Aber, anders als Gozar15 zeigt, solltest du keine untypisierten Collections (sprich ArrayList) verwenden, sondern auf die Collections im Namespace System.Collections.Generic zugreifen und eine typisierte List<T> verwenden.

    Solltest du noch Fragen haben (der Thread ist ja schon etwas älter) dann immer her damit :). Ansonsten schließe bitte den Thread ab, indem du ihn als Beantwortet markiertst.

    Vielen Dank und viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Montag, 12. September 2011 05:40
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************
    Donnerstag, 29. September 2011 08:34
    Moderator