Fragensteller
read a Textfile Value and make a Graphic in C#

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 dayZeitpunkt; 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;- Typ geändert Robert BreitenhoferModerator Donnerstag, 29. September 2011 08:34 Keine Rückmeldung des Fragenstellender
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 ++++++++++++++++++++++++++++++++++++++++++++++++++ -
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); }
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 29. September 2011 08:32 Formatierung
-
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.
-
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.
-
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 -
****************************************************************************************************************
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.
****************************************************************************************************************