Autor Beitrag
nas4killer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: Do 31.01.08 02:16 
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:

ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
nas4killer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: 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:

ausblenden 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 user profile iconChristian S.: C#-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 31.01.08 14:54 
Vergiss übrigens nicht, den StreamReader wieder zu schließen, am besten per using-Block.
nas4killer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 03.02.08 15:03 
user profile iconnas4killer hat folgendes geschrieben:
muss ich das mit einer "if" schleife verwirklichen ?

Siehe if-schleife.de/

user profile iconnas4killer 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42



BeitragVerfasst: 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