C# Fehler bei Textdatei

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von Invidious, 30.05.2007.

  1. #1 Invidious, 30.05.2007
    Invidious

    Invidious Erfahrener Benutzer

    Dabei seit:
    18.01.2007
    Beiträge:
    4.267
    Zustimmungen:
    0
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace Schülertextdatei_Verwaltung
    {
    class Program
    {
    struct Schueler
    {
    public int unknown;
    public string vorname;
    public string nachname;
    public DateTime geb;
    public string plz;
    public string ort;
    public string strasse;
    public char gueltig;
    }

    public enum Aktion
    {
    erstellen,
    erweitern
    }


    static void Main(string[] args)
    {
    Console.WriteLine("################################");
    Console.WriteLine("# Schülertextdatei-Verwaltung #");
    Console.WriteLine("#------------------------------#");
    Console.WriteLine("# Erstellen/Neue Datei E #");
    Console.WriteLine("# Erweitern/anfügen W #");
    Console.WriteLine("# Lesen/Blättern L #");
    Console.WriteLine("# Exit/Ende X #");
    Console.WriteLine("################################");

    while (true)
    {
    Console.Write("\nEingabe: ");
    string str = Console.ReadLine();
    str = str.ToUpper();

    switch (str)
    {
    case "E":
    DateiSchreiben(Aktion.erstellen);
    break;

    case "W":
    DateiSchreiben(Aktion.erweitern);
    break;

    case "L":
    Ausgabe();
    break;

    case "X":
    break;

    default:
    break;
    }
    }
    }

    static void DateiSchreiben(Aktion a)
    {
    string vDatei = "C:\\Dokumente und Einstellungen\\hd060038\\Eigene Dateien\\Visual Studio 2005\\Projects\\Schülertextdatei-Verwaltung\\Schuelertextdatei.txt";
    int z = 0;

    Schueler[] liste = new Schueler[30];

    Console.Write("Nummer eingeben: ");
    liste[z].unknown = Convert.ToInt32(Console.ReadLine());

    Console.Write("Vorname eingeben: ");
    liste[z].vorname = Convert.ToString(Console.ReadLine());

    Console.Write("Nachname eingeben: ");
    liste[z].nachname = Convert.ToString(Console.ReadLine());

    Console.Write("Geburtsdatum eingeben: ");
    liste[z].geb = Convert.ToDateTime(Console.ReadLine());

    Console.Write("Postleitzahl eingeben: ");
    liste[z].plz = Convert.ToString(Console.ReadLine());

    Console.Write("Ort eingeben: ");
    liste[z].ort = Convert.ToString(Console.ReadLine());

    Console.Write("Straße eingeben: ");
    liste[z].strasse = Convert.ToString(Console.ReadLine());

    FileStream fs;
    StreamWriter sw;

    if (a.ToString() == "erstellen")
    {
    fs = new FileStream(vDatei, FileMode.Create);
    }
    else
    {
    fs = new FileStream(vDatei, FileMode.Append);
    }

    sw = new StreamWriter(fs);

    sw.WriteLine(liste[z].unknown + ";" + liste[z].vorname + ";" + liste[z].nachname + ";" +
    liste[z].geb + ";" + liste[z].plz + ";" + liste[z].ort + ";" + liste[z].strasse);

    sw.Flush();
    sw.Close();

    }

    static void Ausgabe()
    {
    string vDatei = "C:\\Dokumente und Einstellungen\\hd060038\\Eigene Dateien\\Visual Studio 2005\\Projects\\Schülertextdatei-Verwaltung\\Schuelertextdatei.txt";

    Schueler[] liste = new Schueler[30];
    int z = 0;

    FileStream fs = File.OpenRead(vDatei);
    StreamReader sr = new StreamReader(fs);
    string leser;
    string[] splitter;

    while (true)
    {
    leser = sr.ReadLine();

    splitter = leser.Split(new Char[] { ';' });

    liste[z].unknown = Convert.ToInt32(splitter[0]);
    liste[z].vorname = Convert.ToString(splitter[1]);
    liste[z].nachname = Convert.ToString(splitter[2]);
    liste[z].geb = Convert.ToDateTime(splitter[3]);
    liste[z].plz = Convert.ToString(splitter[4]);
    liste[z].ort = Convert.ToString(splitter[5]);
    liste[z].strasse = Convert.ToString(splitter[6]);
    Console.WriteLine("Nummer: " + liste[z].unknown + "\n" + liste[z].vorname + liste[z].nachname + "\n" +
    liste[z].geb + "\n" + liste[z].plz + "\n" + liste[z].ort + "\n" + liste[z].strasse + "\n");
    if (sr.Peek() == -1)
    {
    break;
    }

    z++;
    };
    }
    }
    }



    In diesem Programm werde in eine bestehende Textdatei Schülerdaten hineingeschrieben. Das Programm funktioniert problemlos, jedoch wenn ich in einem Programmlauf "Erstelle" und "Erweitere" stürzt das Programm ab.
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. Sviper

    Sviper Guest

    Hi! Wie "verabschiedet" sich das Programm denn? Hast du den Fehler schon genau lokalisiert per Debugging? Ich hab zwar keine erfahrung mit C# sondern nur mit C++ und Java, aber was du auf jeden Fall machen solltest ist auch den FileStream zu schließen, nicht nur den StreamWriter. Ich hab grad nicht viel Zeit, deswegen konnte ich mir das nur halbherzig angucken, aber irgendwie sieht das so aus, als würdest du wenn du erstellst und erweiterst 2 offene FileStreams auf dieselbe Datei haben...
     
  4. #3 Invidious, 30.05.2007
    Invidious

    Invidious Erfahrener Benutzer

    Dabei seit:
    18.01.2007
    Beiträge:
    4.267
    Zustimmungen:
    0
    Achja,ich habe wirklich vergessen bei der Ausgabe den FileStreamzu schließen. Danke. :)
     
Thema: C# Fehler bei Textdatei
Besucher kamen mit folgenden Suchen
  1. c

Die Seite wird geladen...

C# Fehler bei Textdatei - Ähnliche Themen

  1. Nach Fehler beim Flashen geht gar nichts mehr

    Nach Fehler beim Flashen geht gar nichts mehr: Hallo zusammen, ich hoffe dass mir jemand von euch weiterhelfen kann. Es geht um Folgendes: Ich habe ein DraginTouch Y88X, das ist ein ganz...
  2. C# und MySQL

    C# und MySQL: Hallo zusammen! Ich bräuchte dringend hilfe von Experten, da ich ein totaler Anfänger bin. Ich habe eine vorhandene Excel Tabelle. Diese soll in...
  3. Aufrunden einer int in C

    Aufrunden einer int in C: Hi Leute, wie kann ich in C eine Zahl wie 53 auf die nächst größere Zahl welche durch 10 Teilbar ist aufrunden? Also von 53 auf 60 oder von 44...
  4. Lenovo Ideapad G700 - Grafiktreiberinstallation Fehler

    Lenovo Ideapad G700 - Grafiktreiberinstallation Fehler: Hallo, vor ca. einem Jahr hab ich ein neues Lenovo Ideapad G700 bekommen, in welchem eine gt 720m verbaut ist. Ich hatte damals alle Treiber,...
  5. CryEngine First Time Login Fehler?

    CryEngine First Time Login Fehler?: Hallo, habe mir heute die CryEngine 3.5.8 SDK geholt und wollte mich anmelden. Es ging aber nicht. Dort steht das ich ein falsches Passwort oder...