Entwickler-Ecke

IO, XML und Registry - Ersten beiden Zeilen einer Datei auslesen


mau04 - Mi 06.05.09 20:41
Titel: Ersten beiden Zeilen einer Datei auslesen
Hallo,

ich fange gerade ab, C# zu lernen und bin auf ein Problem gestoßen.

Ich will die ersten beiden Zeilen einer Datei auslesen.
Die erste Zeile beinhaltet einen Usernamen, der dann der Variablen "benutzername" zugeordnet werden soll, die zweite Zeile das zugehörige Passwort, was der Variablen "benutzerpasswort" zugeordnet werden soll.

Wie macht man das?


Schonmal Danke! :)


Moderiert von user profile iconKha: Topic aus C# - Die Sprache verschoben am Mi 06.05.2009 um 21:54


Kha - Mi 06.05.09 20:55

Hallo und :welcome:

Schau mal, ob du mit der Methode System.IO.File.ReadAllLines weiterkommst.


jaenicke - Mi 06.05.09 20:56

Allerdings ist eine Textdatei für solche Einstellungen kaum der geeignete Ort.


mau04 - Mi 06.05.09 20:59

Die Methode System.IO.File.ReadAllLines hab ich mir schon angeguckt, habe aber ehrlich gesagt keine Ahnung, wei cih die benutzen soll :(

@jaenicke: Es geht mir nur ums probieren..


jaenicke - Mi 06.05.09 21:01

Das Beispiel in der Dokumentation hast du dir noch nicht angeschaut, oder?
http://msdn.microsoft.com/de-de/library/s2tte0y1.aspx
Zitat:

C#-Quelltext
1:
2:
3:
4:
5:
6:
        // Open the file to read from.
        string[] readText = File.ReadAllLines(path);
        foreach (string s in readText)
        {
            Console.WriteLine(s);
        }


mau04 - Mi 06.05.09 21:03

Doch, genau das ;)
nur ich weiß nich, wie ich die einzelnen Zeilen da rauskriege.. -.-


jaenicke - Mi 06.05.09 21:07

Wie wäre es mit readText[0] und readText[1]? Wobei du aber schauen solltest, ob die Zeilen überhaupt exstieren.


mau04 - Mi 06.05.09 21:13

hmmm...

Zitat:
string[] readText = File.ReadAllLines(@"data.txt");

{
string benutzername = readText[0];
string benutzerpasswort = readText[1];
MessageBox.Show(benutzername + " " + benutzerpasswort);

}


Jetzt funktionierts :)

Danke :)


jaenicke - Mi 06.05.09 21:15

Du solltest den Pfad mit angeben. Wenn du die Datei in dem Verzeichnis der Exe hast, dann kannst du dieses Verzeichnis mit Application.StartupPath auslesen:
http://msdn.microsoft.com/de-de/library/system.windows.forms.application.startuppath.aspx
Sonst ist es eher Zufall, dass es klappt.


mau04 - Mi 06.05.09 21:23

Ich hab schon das nächste Problem. :(
Das auslesen klappt ja jetzt, aber wenn ich die Variablen nun im nächsten Befehl verwenden will erhalte ich die Meldung: Der Name "benutzername" ist im aktuellen Kontext nicht vorhanden.

Wie änder ich das?


jaenicke - Mi 06.05.09 21:40

Ich vermute das liegt an dem Quelltextblock, den du mit { ... } erstellt hast, was dadurch genau passiert weiß ich nicht. Grundsätzlich heißt der Fehler jedenfalls, dass die Variablen an der Stelle nicht zur Verfügung stehen.


k-weddige - Do 07.05.09 08:27


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
string[] readText = File.ReadAllLines(@"data.txt");

                { // Hier öffnest du einen Scope
                    string benutzername = readText[0]; // Die Variablen werden im aktuellen Scope deklariert
                    string benutzerpasswort = readText[1];
                    MessageBox.Show(benutzername + " " + benutzerpasswort);

                } // Hier schließt du den Scope wieder. Damit sind auch die Variablen nicht mehr verfügbar.



C#-Quelltext
1:
2:
3:
4:
5:
6:
public partial class Form1 : Form
    {
        private string benutzername; // Wenn du die Variablen gleich zu Beginn der Klasse deklarierst, sind sie 
        private string benutzerpasswort;  // überall in der Klasse sichtbar.

        ...