dipps
Goto Top

C eine TXT auslesen und in arrays speichern

C# eine TXT auslesen und in arrays speichern

Hallo ich möchte eine Textdatei auslesen.
als erstes bruche ich ein befehl der mir ausgibt wie viele zeilen ich habe damit ich weiss wie groß die schleife dann wird. dann habe ich es schon so weit das ich jede zeile in ein array speicher. nun will ich die zeile aufteilen in mehrere arrays und zwar bis zum ";" bzw "," was gibt es dafür für befehle?

Danke schon mal

Content-Key: 89426

Url: https://administrator.de/contentid/89426

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: tacker
tacker 09.06.2008 um 14:28:42 Uhr
Goto Top
salü Dipps!

ich würde folgende schleife verwenden um die textdatei bis zum ende zu bearbeiten!

FileStream fs = new FileStream(@"test.txt", FileMode.Open);  
StreamReader sr = new StreamReader(fs);
while (sr.EndOfStream)
{
...
}

dein zweites "problem" behebst du mit der splitfunktion des strings. dafür nehme ich an, dass du jetzt jede eingelesene zeile in einem string speicherst! dort kannst du ihm dann ein einem seperaten trennzeichen-array angeben nach welchen zeichen er splitten soll!

gruss tacker
Mitglied: Dipps
Dipps 09.06.2008 um 14:51:30 Uhr
Goto Top
geht nicht da kommen 3 fehler

Fehler 1 Syntaxfehler. "while" erwartet.
Fehler 2 Syntaxfehler. "(" erwartet.
Fehler 3 ) erwartet.

anscheint kommt er mit dem "do" nicht hin
Mitglied: tacker
tacker 09.06.2008 um 15:16:57 Uhr
Goto Top
guck ma meinen code an, habs kurz darauf noch geändert. wie du gemerkt hast das "do" weglassen. ansonsten kannste ja ma kurz deinen ganzen code posten!

gruss tacker
Mitglied: Dipps
Dipps 09.06.2008 um 15:29:55 Uhr
Goto Top
Also ich habe mal den Codde er geht jetzt aber nicht wirklich in die Schleife den er gibt mir keinen Text aus. useranzahl ist ein input feld aber er sollte doch trozdem da was ausgeben oder?

private void button3_Click(object sender, EventArgs e)
        {
            

            FileStream fs = new FileStream(@startusertxt.Text, FileMode.Open);
StreamReader sr = new StreamReader(fs);
while (sr.EndOfStream)
{
    useranzahl.Text = "geht in schleife"; // Zur Probe sollte ja anzeigen das er in der schleife ist  
}
Mitglied: tacker
tacker 09.06.2008 um 15:45:10 Uhr
Goto Top
aiaiai was alles untergeht wenn man nicht direkt testen kann...

while (!sr.EndOfStream)

er soll ja schliesslich solange die schleife durchmachen bis er am ende ist...

jetzt sollte er die jeweilige zeile in deinem textfeld "useranzahl" ausgeben, ansonsten evtl mit ner messagebox testen...

gruss
Mitglied: Dipps
Dipps 09.06.2008 um 15:57:07 Uhr
Goto Top
gut danke schön und das mit dem split habe ich auch noch nicht ganz hin bekommen ich speicher die zeile erstmal in der var

string nutzer;

while(!EndOfStream)
{
nutzer=sr.ReadLine();

// jetzt wäre nutzer="Max , Mustermann" 

}

ich möchte aber das er mir am ende Max, Mustermann, MaxMu, Pass
ausgibt das heisst in der TXT steht nur Name vorname in der Schleife soll er ein Namens kürzel bauen MaxMu und ein Passwort generieren
Mitglied: tacker
tacker 09.06.2008 um 16:13:25 Uhr
Goto Top
schön ausformuliert würde dies dann etwa so aussehen:

nutzer = sr.readline();

string delims = new string[2];
delims = ",";  
delims[1] = " ";  

string vorname = nutzer.Split(delims, StringSplitOptions.RemoveEmptyEntries);
string nachname = nutzer.Split(delims, StringSplitOptions.RemoveEmptyEntries)[1];
string kuerzel = vorname.Substring(0, 3) + nachname.Substring(0, 2);
Random random = new Random();
int pw = random.Next(100000);
MessageBox.Show(vorname + ", " + nachname + ", " + kuerzel + ", " + pw);  

hoffe dies ist etwa, was du dir vorstellst.. ansonsten würde ich dir raten einmal ein onlinebook zu c# durchzulesen!

edit: falls das passwort immer gleich viele ziffern haben soll..

int pw = random.Next(100000, 999999);

gruss tacker
Mitglied: Dipps
Dipps 09.06.2008 um 16:33:27 Uhr
Goto Top
die var nutzer wird aber so deglariert?

string nutzer;

oder muss ich da auch noch was beachten den da kommt eine fehler in der zeile

nutzer= sr.readline();

Fehler 1 "System.IO.StreamReader" enthält keine Definition für "readline", und es konnte keine Erweiterungsmethode "readline" gefunden werden, die ein erstes Argument vom Typ "System.IO.StreamReader" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
Mitglied: tacker
tacker 09.06.2008 um 16:38:08 Uhr
Goto Top
das liegt wohl eher daran, falls du diese zeile wirklich so in deinem code hast

FileStream fs = new FileStream(@startusertxt.Text, FileMode.Open); 

was soll dabei denn die textdatei sein ?
Mitglied: Dipps
Dipps 09.06.2008 um 17:17:56 Uhr
Goto Top
habe den fehler gefunden es muss großgeschrieben werden

nutzer=sr.ReadLine();
habe jetzt noch einwenig geändert mit dem Passwort und so.
kann ich aber noch eine sleep funktion einbauen damit nicht drei nutzer oder so die hintereinander sind das selbe passwort haben. sprich so art
sleep 1;
das er am ende 1 sekunde wartet eh er wieder hochspringt
Mitglied: melisa88
melisa88 14.08.2008 um 18:20:42 Uhr
Goto Top
Hi ich habe auch eine frage:
wie kann ich in C++ einen string aus einer Datei lesen? Also soweit ich weiß muss man mit input output machen aber wie...?
Mitglied: pkffsl
pkffsl 18.08.2008 um 13:50:33 Uhr
Goto Top
#include<fstream>

In der Main:

ifstream datei_lesen;

string zeile /*Der String, den du haben willst*/

datei_lesen.open("Pfad zur TXT"); /*Datei wird geöffnet*/

if (!datei_lesen.fail())
{
while(!datei_lesen.eof()) /*Bis Ende der Datei erreicht*/
{
getline(datei_lesen,zeile); /*Hier wird die Zeile in den string zeile
geschrieben*/
}
}

else
cout<<" Lesen der Datei fehlgeschlagen!";

datei_lesen.close(); /*Datei wird geschlossen*/