C# - Textdatei auslesen, brauche Hilfe

Alexander12

Erfahrenes Mitglied
Hi.

Mittels folgender Zeilen lese ich eine Textdatei aus:

Code:
private void button3_Click(object sender, EventArgs e)
        {
            StreamReader datei;
            datei = File.OpenText("Adressen.txt");

            string zeile = "";
            string[] felder;
            int n = 1;
            while (datei.Peek() != -1)
            {
                zeile = datei.ReadLine();
                felder = zeile.Split(new char[] { ',' });
                textBox3.Text = felder[0];
                textBox4.Text = felder[1];
                ++n;
            }

            datei.Close();
            
        }

Also ist ja jede Zeile ein Datensatz. Er liest mir aber immer nur die letzte Zeile aus. Kann Ich das machen das er von vorne anfängt und nen Button machen "Nächster Datensatz", das er dann den nächsten liest?

MfG Alexander12
 

Norbert Eder

Erfahrenes Mitglied
So einfach geht das nicht, aber was du machen kannst ist, deine TextBox multiline enabled zu machen -> Eigenschaft MultiLine auf true setzen und den Text immer anhängen. So wie du das jetzt machst, überschreibst du die letzte Zeile immer.

TextBox1.Text += zeile + System.Environment.NewLine
 

Alexander12

Erfahrenes Mitglied
Hmm...

Geht das wenigstens mit diesem Code das ich zu einer bestimmten Zeile springe?

Oder muss Ich es gleich anders aufbauen? Wie würdest du es machen?

MfG Alexander12
 

Norbert Eder

Erfahrenes Mitglied
Lies das ganze in eine ArrayList wo du mit einem Index zugreifen kannst, dann kannst das auch mit Vorwärts und Zurück abbilden. So in der Form .. nein.
 

Alexander12

Erfahrenes Mitglied
Hi.

Deine Idee hört sich gut an, aber hast vielleicht einen Tipp wie Ich das bewerkstelligen könnte?
Oder evtl. nen Link?

MfG Alexander12
 

Christian Kusmanow

Erfahrenes Mitglied
Mal schaun.... :D
Code:
using ( OpenFileDialog Dialog = new OpenFileDialog() ){
	DialogResult Result;
	Dialog.CheckFileExists = true;
	Dialog.Title = "Adressen Laden";
	Dialog.Filter = "Text-Dateien|*.txt";
	Dialog.RestoreDirectory = true;

	Result = Dialog.ShowDialog();

	if ( Result == DialogResult.OK ){ // Wenn die Datei ausgewählt wurde wird sie eingelesen
		using ( TextReader Reader = new StreamReader( Dialog.FileName, Encoding.Default ) ){

			string Line = String.Empty;

			while ( (Line = Reader.ReadLine()) != null ) // Zeile für Zeile auslesen
				MyArray_WhatEver.Add( Line );
		}
	}
}

:p, cosmo
 

Alexander12

Erfahrenes Mitglied
Hi.

@cosmo:

Dein Code ist echt Klasse, hab damit auch ein bisschen "rumgespielt" etc.
Aber: Dann sagt er mir (der Compiler) das es die Methode "Add" für System.Array nicht gibt oder so was..
Hab Mal was (auch teilweise mit deinem Code) probiert:

Code:
Array MyArray_WhatEver = new Array[100];
StreamReader Reader = new StreamReader("C:/Adressen.txt");
string Line = String.Empty;

Line = Reader.ReadLine();
{
this.listBox.Items.Add(Line);
}
Der liest IMMER nur die erste Zeile ein. Kann Ich da auch so ne Schleife einbaun z.B.While etc. Habe es zwar schon probiert, aber da kommt dann ein Error, dass er String nicht zu Bool konvertieren kann oder so ein Dreck, Ich weiß zwar was er damit meint, aber Ich weiß nicht wei Ich das sonst berwerkstelligen soll..

@cosmo und alle anderen:
Was habe Ich falsch gemacht?

MfG Alexander12
 

Christian Kusmanow

Erfahrenes Mitglied
Was habe Ich falsch gemacht?
Du hast "MyArray_WhatEver" falsch interpretiert.
Ich meinte irgend eine Sammlung in die Du die ausgelese Zeile hinein schiebst.
Der Grund das Du nur eine Zeile ausliest ist,
dass du vergessen hast das ganze so zu machen, wie es gepostet hab.
Code:
while ( (Line = Reader.ReadLine()) != null ) // Zeile für Zeile auslesen
	this.listBox.Items.Add(Line);
MfG, cosmo