Unterschiedliche Dateien einlesen und nach diversen Kriterien ausgeben
-
Hallo zusammen,
ich weis gar nicht so genau ob mein Titel für diesen Post passt ^^. Des Weiteren will ich kurz darauf hinweisen das ich erst seit ca 2 Wochen c# programmiere und auch sonst nich wirklich Ahnung von der Materie hab. Bin eigentlich FISI und hatte bisher wenig mit sowas zutun :).
Nun ja ich habe hier folgendes Problem:
In einem Programm soll ein Benutzer verschiedene Dateien einlesen können. Die eingelesenen Daten sollen nun in einer Tabelle oder aber auch in verschiedenen Textfeldern angezeigt werden ( je nach Dateiformat). Es handelt sich hier um *.XML und *.h Dateien. Die *.h Dateien lassen sich auch in einem Editor öffnen.
Ich habe jetzt schon mal was programmiert, was eine solche XML einliest und in einem DataGridView in Tabellenform anzeigt. Das war dank der MSDN auch nicht so schwer. Nun würde ich auch gern diese *.h Datei einlesen können und die beinhalteten Daten sauber und editierbar ausgeben. In Textfeldern z.B.
Eine Typische *.h Datei sieht so aus:
H 0196 0000 17.11.2005 H HI 131.08.2005Stadt Name/Name HI 227420301 Strasse HI 327420301 27420301 27420304 0 250 250STZ Z O 30.22 1 HI 427420301 -0.50 03461201MOD HA HI 427420301 0.00 03462201MOD PA HI 427420301 4.47 03472401MOD A--R 0300 HI 427420301 20.07 03521701MOD A--R 0300 HI 427420301 29.06 03544001MOD RQ--2 0.02 0000 HI 427420301 29.19 03550101MOD PE HI 427420301 29.72 03551901MOD EH HI 427420301 29.72 03552401MOD HL 30.22 HI
Diese Daten (z.B Name, Datum oder diese Kürzel wie A--R etc) will ich editierbar dargestellt haben.
Hier mal mein Code....der nicht richtig funktioniert. XML lässt sich einlesen *.h datei leider nicht:
private void öffnenToolStripMenuItem_Click(object sender, System.EventArgs e) { OpenFileDialog newFile = new OpenFileDialog(); Stream myStream = null; newFile.InitialDirectory = "c:\\"; newFile.Filter = "Haltung (*.h)|*.h|XML (*.xml, *.xsd)|*.xml;*.xsd|Alle Dateien (*.*)|*.*"; newFile.FilterIndex = 2; newFile.RestoreDirectory = true; if (newFile.ShowDialog() == DialogResult.OK) { try { if ((myStream = newFile.OpenFile()) != null) { using (myStream) { dataSet_Version.ReadXml(myStream); dataGridView1.DataSource = dataSet_Version; dataGridView1.DataMember = "Liegenschaft"; } } else { using (newFile) { textfiles hfile = new textfiles(); string fs = hfile.ReadFile(newFile); dataGridView1.DataSource = fs; } } } catch(Exception ex) { MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); } } }
Vielleicht kann mir ja mal jemand sagen wie ich die *.h Datei einlesen kann und die Daten sauber darstellen kann.
Danke für die Hilfe
//Banthrass
-
36 Beiträge und Du weißt immer noch nicht wie man Code postet.
Ich mach mir die Mühe nicht und lese das jetzt ohne Code Tags durch.
-
Danke für deinen geistigen Erguss Papnase. Schau dir doch mal von wann meine Beiträge sind. Das letzte mal hab ich hier vor ca 3 Jahren geschrieben. Anstatt hier über syntax highlighting zu mekern hättest du lieber mal was produktives schreiben sollen.
Es ist c# code und dieser wird hier mit "
" "
" dargestellt. Wie du unschwer feststellen kannst ist mein code mit diesen Tags eingerahmt. Demnach liegt der Fehler nicht bei mir.
Ich mach mir die Mühe nicht und lese das jetzt ohne Code Tags durch.
Verlangt keiner von dir. Genauso wie niemand von dir verlangt solche sinnfreien Kommentare zu posten.
//Liebe Grüße, Dein Vorbild
-
Wenn Du schon andere als Pappnase bezeichnen willst, solltest Du Dir die Frage stellen, was das [/cpp] mitten in Deinem Quellcode verloren hat.
ReadXML auf eine beliebige Datei ? Wie soll das klappen ?!
Selbst wenn das DataSet spezielle Parser hätte, woher soll es denn wissen wo was eingetragen werden soll ?
Du wirst wohl nicht um einen eigenen "Parser" herum kommen. Auf den ersten Blick erscheint es mir, als würde es ausreichen Zeilenweise einzulesen und das mit Regulären Ausdrücken zu zerlegen. Die Daten kannst Du nach dem Zerlegen dann selbst in das DataSet einspeisen.
(Eventuell reicht Dir aber auch ein Zerlegen mittels Split)
-
Wie dem auch sei, das hat alles nicht mit meinem Problem zu tun. Demnach lasse ich es mal ausser acht.
ReadXML habe ich eingebaut um XML dateien einzulesen und in dem Gridview darstellen zu können. das funktioniert auch ohne weiteres. Wenn ich nun aber im Dialog "Datei öffnen" eine *.h datei öffne, dann soll er nicht readxml nutzen sondern die datei einfach einlesen. die *.h datei ist im endeffekt nur eine normale textdatei bei der die kennung umbenannt wurde. Ergo: ich will wahlweise eine solche textdatei einlesen, zerpröseln und darstellen. mit dem einlesen und darstellen wäre mir aber vorerst mal geholfen
Und Sorry nochmal, dass ich ein wenig forsch geworden bin.
-
Na,
lies die Datei ein, parse sie und stelle sie dar. Ich weiß nicht genau was Du jetzt an Hilfe aus der Community erwartes
-
Das ist nicht das Problem, hättest mich auch ruhig unter Deinem Nick als Pappnase bezeichnen können.
Aber wie schon gesagt, parse die Datei.