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 user profile iconKha: 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<intstring[]> contents = new Dictionary<intstring[]>(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.

user profile iconTheki hat folgendes geschrieben Zum zitierten Posting springen:

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<intstring[]> contents = new Dictionary<intstring[]>(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

user profile iconTheki hat folgendes geschrieben Zum zitierten Posting springen:
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:

Aus diesen Hinweisen solltest Du ableiten, wo und wie Du Dir selbst helfen kannst.

Viel Erfolg! Jürgen