Entwickler-Ecke
IO, XML und Registry - Textdatei in eine Listbox laden
nas4killer - Do 31.01.08 02:16
Titel: Textdatei in eine Listbox laden
Hallo leute,
habe vor jahren mal in Delphi Programmiert und nun bin ich langsam auf C# Umgestiegen Nun habe ich ein Problem.
Ich arbeite viel mit Listboxen. Früher konnte ich einfach eine Listbox in eine Textdatei durch SaveToFile, solche möglichkeit fand ich bei C# leider nicht. Um realiesiere dies durhc:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| StreamWriter sw = new StreamWriter(@"C:\test.txt"); for (int i = 0; i < this.listBox1.Items.Count; i++) { sw.WriteLine(this.listBox1.Items[i].ToString()); sw.Flush(); } sw.Close(); |
Nun möchte ich natürlich diese Datei auch auslesen. Früher LoadFromFile ;-) Aber nun bin ich ratlos und mit dem StramReader komm ich nich klar.
Kann mir jemand so ein Quelltext am besten den ich direkt einfügen könnte oder ein beispiel schreiben ? am besten mit einer kleienrn erklärenung damit ich es auch verstehe. Danke
mfg
Killer
Moderiert von
Christian S.: C#-Tags hinzugefügt
nas4killer - Do 31.01.08 08:57
Da sieht man doch was 4-5 stunden shclaf brignen können :-) Wenn man drüber nachdenkt ist es auch logisch :-)
Mein ergebnis:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| string var = "";
StreamReader sr = new StreamReader("c:\\test.txt");
while ((var = sr.ReadLine()) != null) { listBox1.Items.Add(var); } |
mfg
killer
Moderiert von
Christian S.: C#-Tags hinzugefügt
JüTho - Do 31.01.08 10:37
Hallo,
das ist in der Tat ein Problem von NET (und lässt viele Umsteiger am Anfang verzweifeln): Es gibt so viele Möglichkeiten... Dein Problem ist nämlich noch viel einfacher zu lösen:
C#-Quelltext
1:
| listBox1.Items.AddRange(File.ReadAllLines("c:\\test.txt")); |
Erklärung: Die statische Methode
File.ReadAllLines() liefert ein String-Array; eine der Varianten von
AddRange() akzeptiert ein Object-Array als Parameter, und ein String-Array ist genau das.
Für Datei-Operationen kannst Du in der
SDK-Doku unter den Klassen
File, FileInfo, Directory, DirectoryInfo, Path sehr oft fündig werden. Generell gilt, dass es für viele Methoden Überladungen gibt, bei denen man eine passende Variante suchen sollte.
Viel Erfolg weiterhin! Jürgen
Kha - Do 31.01.08 14:54
Vergiss übrigens nicht, den StreamReader wieder zu schließen, am besten per using-Block.
nas4killer - So 03.02.08 14:00
Danke für eure Antworten. Ist gut zu wissen das es auch eien einfachere methode gibt.
denke es passt irgendwie noch zur dieser Frage daher mahc ich kein extra theard auf.
Beim Einlesen der Lines, wie sag ich ihm am besten er soll die Line immer nur bis zu einem bestimmten Wortlesen. z.b.
In der Textdatei steht:
Es ist ein tolles leben XXX
Und in der Listbox soll stehen
Es ist ein tolles leben
und so weiter. Das Wort ist dann in jeder Line gleich.
muss ich das mit einer "if" schleife verwirklichen ? Oder gibts da eine bessere möglichkeit ? Denke das wäre ziemlich aufwendig so.
Danke
JüTho - So 03.02.08 15:03
nas4killer hat folgendes geschrieben: |
muss ich das mit einer "if" schleife verwirklichen ? |
Siehe
http://if-schleife.de/
nas4killer hat folgendes geschrieben: |
Oder gibts da eine bessere möglichkeit ? Denke das wäre ziemlich aufwendig so. |
Es geht aber nicht anders: Du willst in jedem Eintrag prüfen, ob das Wort enthalten ist; also musst Du alle Einträge durchgehen und bei jedem die Prüfung und ggf. Änderung vornehmen.
Stichworte:
for, foreach, Contains, IndexOf, Substring.
Jürgen
nas4killer - Mo 04.02.08 12:44
Habe bissien rumgelesen aber ich weis nicht finde irgendwie kein ansatz. Habe aber festgestellt das viele das halt nicht mit einem bestimmten wort sondern mit "|" machen, was sogar besser für mich wäre.
Listeneintrag |0|1|1|0|0|
Könnten ihr mir ihr mir ein Ansatz zumindest geben wie ich es am besten schaffe das in die Listenbox nur der Listeneintrag geschreiben wird und ich die 1 und 0 abfragen kann ?
die 1 und 0 kann ich später dann in checkboxen einbinden denke das kriege ich dann hin. Sobald ich weis wie ich das auslesen kann z.b. durhc variablen, kann man ja ruhig int oder string dazu verwenden.
Danke
Killer
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!