Entwickler-Ecke
Basistechnologien - Userlist aus Textdatei auslesen
Theki - Sa 01.11.08 13:21
Titel: Userlist aus Textdatei auslesen
Hallo...
seit einigen Tagen sitz ich vor dem Problem, dass ich gerne eine userlist aus einer textdatei ausgelesen haben möchte..
Die Textdatei sieht ungefähr so aus:
Quelltext
1: 2: 3:
| user1,wert1,wert2,wert3,wert4,wert5,wert6,wert7 user2,wert8,wert9,wert10,wert11,wert12,wert13,wert14 usw |
Wie kann ich es nun anstellen, dass mir jede Zeile in einem extra Array gespeichert wird.
und dass ich diese nachher auch gezeilt wieder einspeichern kann.
Hat jmd von euch eine Lösung?
mfg
Theki
Moderiert von
Kha: Topic aus Multimedia / Grafik verschoben am Sa 01.11.2008 um 12:37tei
JüTho - Sa 01.11.08 13:39
Hallo,
Deine Frage umfasst zwei Probleme: zum einen das Einlesen der Zeilen, zum anderen das Aufteilen einer jeden Zeile. Das Ganze lässt sich umfangreich lösen über
CsvReader; dazu gibt es viele Tipps über Foren oder Google oder
CodeProject [
http://www.codeproject.com/index.aspx] oder
ConnectionStrings [
http://www.connectionstrings.com/default.aspx?carrier=textfile].
Du kannst es aber auch schnell lösen mit Standard-Methoden:
File.ReadAllLines liest eine Textdatei in ein String-Array.
String.Split teilt eine Textzeile in ein Array auf. Ein Verfahren sieht also etwa so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| string filename = @"C:\GemeinsameDaten\MyText.txt"; string[] rows = File.ReadAllLines(filename); Dictionary<int, string[]> contents = new Dictionary<int, string[]>(rows.Count); for(int x1 = 0; x1 < rows.Count; x1++) { string[] content = rows[x1].Split(new char[] {','}); contents.Add(x1, content); } |
Achtung, dieser Code enthält einen Fehler - siehe die folgenden drei Beiträge.
Ich habe ein
Dictionary verwendet, weil dies mit variabler Größe arbeitet; genauso wäre auch
List<string[]> geeignet. Wegen der festen Größe sind Arrays in der Regel nur zum Einlesen und als konstante Größe nützlich. Aber wenn Du Deine Werte auch ändern und nachher wieder speichern willst, sind List<T> und Dictionary<T, U> vorzuziehen.
Gruß Jürgen
Theki - Sa 01.11.08 13:50
Okay, das versteh ich schonmal, nur ich weiß nicht was du mit "Count" meinst bzw. was du damit bewirkst...?
Den beim debuggen kommt das:
Quelltext
1:
| Fehler 1 "System.Array" enthält keine Definition für "Count". |
Danke schon mal im vorraus..
mfg
Theki
Delete - Sa 01.11.08 14:15
Hallo.
Theki hat folgendes geschrieben : |
Quelltext 1:
| Fehler 1 "System.Array" enthält keine Definition für "Count". | |
Das macht Sinn, denn bei Arrays heißt es
Length und nicht
Count.
Also:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| string filename = @"C:\GemeinsameDaten\MyText.txt"; string[] rows = File.ReadAllLines(filename); Dictionary<int, string[]> contents = new Dictionary<int, string[]>(rows.Length); for(int x1 = 0; x1 < rows.Length; x1++) { string[] content = rows[x1].Split(new char[] {','}); contents.Add(x1, content); } |
Gruß
Waldteufel
JüTho - Sa 01.11.08 14:59
Theki hat folgendes geschrieben : |
Okay, das versteh ich schonmal, nur ich weiß nicht was du mit "Count" meinst bzw. was du damit bewirkst...?
Quelltext 1:
| Fehler 1 "System.Array" enthält keine Definition für "Count". | |
Für diesen Fehler entschuldige ich mich vielmals.
Er kann als Hinweis auf mehrere Punkte dienen:
- Vertraue nie einer Antwort, sie könnte Fehler enthalten. (In der Regel schreibe ich solche kurzen Code-Schnipsel einfach hin, ohne sie im Debugger zu prüfen; dann kann solch ein Fehler durchrutschen, zumal das NET Framework bei den Bezeichnern auch nicht konsistent ist.)
- Das wichtigste Hilfsmittel ist und bleibt die SDK-Doku/MSDN; da kann und sollte jeder selbst prüfen, welche Möglichkeiten es gibt - konkret: was für Eigenschaften eine bestimmte Klasse (hier: ein Array) hat. Wenn der Compiler also sagt, dass System.Array keine Definition für Count enthält, musst Du nachschauen, welche Eigenschaft oder Methode passt. In der IDE gibt es auch passende Hilfen, wenn hinter einem Bezeichner ein Punkt gesetzt wird und Du kurz wartest.
- "Count" heißt "Anzahl". Was meine ich wohl mit der Anzahl bei einem Array? Ich erreiche, dass die for-Schleife im richtigen Bereich von...bis arbeitet (das ist Grundwissen bei einer jeden Programmiersprache); und ich sorge dafür, dass das Dictionary sinnvollerweise auf eine Anfangsgröße gesetzt wird (das kann in der SDK-Doku/MSDN nachgelesen werden).
Aus diesen Hinweisen solltest Du ableiten, wo und wie Du Dir selbst helfen kannst.
Viel Erfolg! Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!