Autor Beitrag
Orothred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 86


C# (VS 2005)
BeitragVerfasst: Do 13.09.07 11:37 
So, Versuch nummer 3. Also, mein problem sollte ja mittlerweile bekannt sein, aber nochmal:

ich will in meinem Programm Kopfrechentrainer (siehe Freeware-Projekte) die Ergebnisse eines Spiels in einer Text-Datei speichern. Allerdings wird der Datensatz immer wieder überschrieben und ich finde jeweils nur einen datensatz in der textdatei

was kann ich da tun?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 13.09.07 11:39 
Je nachdem, mit welcher Methode Du die Datei zum Schreiben öffnest (hier wäre der Quelltext hilfreich), kannst Du meist als zweiten Parameter einen Modus-Angeben. In den meisten Fällen gibt es dann einen "append"-Modus. Aber wie gesagt: Präziser kann man Dir nur Antworten, wenn Du ein wenig von Deinem Quelltext zeigst.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
bd.cole
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Do 13.09.07 11:40 
Wäre gut wenn du Zu deinen Fragen immer den Teil von deinem Code postest um den es geht.
Aber ich denke du kannst eine List<MeineDaten> oder so machen und dann immer die Ergebnisse immer zufügen. Und die Liste dann in die Datei schreiben. Oder willst du dort auch noch die Ergebnisse vom letzten Spiel haben?
Mfg Cole
Orothred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 86


C# (VS 2005)
BeitragVerfasst: Do 13.09.07 11:42 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
// Highscores in Textdatei speichern
            string Datei = "Highscore.txt";
            FileStream fs = File.OpenWrite(Datei,);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "   " + Punkte + " von " + Anzahl + " Punkte in " + String.Format("{0:00}:{1:00}", Zeit.Minutes, Zeit.Seconds) + " Minuten");
            sw.Close();


Die Append-Methode würde funktionieren, allerdings weiß ich jetzt nicht genau, wo ich die einbinden muss. außerdem speichert die Append-Methode den nächsten Datensatz ans ende der Datei, ich würde gerne an den anfang speichern

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
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 13.09.07 11:58 
Hallo,

für Textdateien gibt es ein ganz einfaches Verfahren:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
using System.IO;
string filename = "Highscore.txt";
//  erzeuge die neue Zeile
string myLine = DateTime.Now.ToShortDateString() + "..." + " Minuten") + Environment.NewLine;
//  einfach anhängen
File.AppendAllText(filename, myLine);

Du musst nur beachten, dass an den Anfang oder an das Ende CR/LF gehört. Dieses Verfahren ist auch geeignet, wenn ein Buffer aus mehreren neuen Einträgen gespeichert werden kann.

Zusatzbemerkungen: Benutze doch String.Format() für den gesamten String; das macht es einfacher (und vielleicht auch schneller, weil nicht soviel zwischen verschiedenen Strings und Konvertierungen hin- und hergesprungen werden muss). Den neuen Eintrag an den Anfang zu setzen, geht nur dadurch, dass die gesamte bisherige Datei kopiert werden muss; am einfachsten ist es wahrscheinlich so:
ausblenden C#-Quelltext
1:
2:
3:
//  bitte kontrollieren, nur aus der Erinnerung geschrieben
string newText = myLine + File.ReadAllText(filename);
File.WriteAllText(filename, newText);

Gruß Jürgen
Orothred Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 86


C# (VS 2005)
BeitragVerfasst: Do 13.09.07 12:03 
vielen dank, habs hinbekommen