Benutzer mit den meisten Antworten
Mehrer Textboxen auslesen

Frage
-
Hallo,
Ich hab da mal eine Frage?
Wenn ich mehrer Textboxen auf Ihren Inhalt überprüfe und das ergebniss in ein Array speichern möchte,
muss ich doch nur einen Vergleich machen oder?
Int32 x = 0; foreach (Control element in this.Controls) { if (element is TextBox) { if (element.Text == " 0,1,2,3,4,5,6,7,8,9") { element.Text = listPunkte[x]; } else element.Text = listName[x]; binaerDatei.Write(listPunkte[x]); binaerDatei.Write(listName[x].ToString()); } }
Aber hier speichert er mir nur die INT typen.
Was mache ich da Falsch?
Mit freundlichen Grüßen
Antworten
-
Hallo Jonny,
die Methode "WriteTop10" hast du so modifiziert, dass es nicht gehen kann.
Die "using"-Anweisung soll sicherstellen, dass dein "Disposable"-Objekt auch entsorgt wird.
using (...Objekt erstellen...)
{
... mit Objekt arbeiten
} // hier wird praktisch "Dispose" ausgeführt.
Weiteres siehe hier...
Wenn du die Methode "WriteTop10" umschreiben willst, dann versuche es mal komplett ohne Copy/Paste.
public bool WriteTop10(string pFileName) { Normalize(); using ( FileStream fStream = new FileStream(pFileName, FileMode.Create) ) { using ( BinaryWriter br = new BinaryWriter(fStream) ) { try { for ( int i = 0 ; i < 10 ; i++ ) { br.Write(player[i].Score); br.Write(player[i].PlayerName); } // Ende "for" return true; } // Ende "try" catch ( Exception ) { // Fehlerbehandlung ergänzen return false; } // Ende "catch" } // Ende "using ... br } // Ende "using ... fStream } // Ende Methode
Wenn du "schreiben" willst, musst du auch den "BinaryWriter" nehmen, der "BinaryReader" hat keine Write-Methode. Aber warum möchtest du die Methode ändern? Wenn es die Datei score.dat im angegebenen Verzeichnis geben sollte, wird es auch funktionieren. Überprüfe lieber, ob die Datei existiert.
Wenn dir keine Einträge angezeigt werden, ist die Datei vermutlich nicht vorhanden oder nicht lesbar. Du kannst ja mal die "ReadTop10"-Methode modifizieren und 1 Zeile einfügen:
public bool ReadTop10(string pFileName) { if ( !File.Exists(pFileName) ) { // Diese Zeile einfügen System.Windows.Forms.MessageBox.Show("Die Datei: " + pFileName + " ist nicht vorhanden und wird jetzt erstellt."); WriteTop10(pFileName); } ...
Vielleicht arbeitest du auch mal vorab noch etwas an den Grundlagen zu c#, weil die Fehler zeigen, dass da noch nicht alles sitzt. Hier findest du einige Quellen...
Gruß
- Als Antwort markiert jonnywhite7 Samstag, 16. April 2016 16:05
Alle Antworten
-
Hallo,
bezogen auf deine Frage: Wo speicherst du denn was in welches Array?
Ich sehe eine (Lauf?)Variable x, die unverändert bleibt.
Was macht dein Code? Er speichert in die Textboxen in jedem Durchlauf das erste Element der Arrays listPunkte oder listName, also haben die Textbox-Gruppen jeweils alle den selben Wert.
Dann speicherst du in der Folge immer das selbe Arrayelement ab.
Was du machen möchtest, kann ich nur ahnen (oder raten).
Für alle gefundenen Textboxen prüfst du, ob die Text-Eigenschaft den Wert " 0, ...,8,9" annimmt. Also gibt es nur zwei Fälle.
Kannst du mal kurz beschreiben, was genau du machen möchtest?
Gruß
-
Hallo,
Hmm also wen du es so beschreibst Dan Zweifel ich an mir selber, obich das vergleichen von Objekten wirklich begriffen habe.....
Also ich habe 20 textboxen in die Namen bzw zahlen Einträge vorhanden sind die wollt ich vergleichen nach int und string Eingabe Dan die jeweiligen Einträge in ein array speichern also ein array für die punkte mit 10 einträge und ein array Namen mit 10 Einträgen und dann die beiden in eine Binary Datei speichern
Mfg
-
Hallo Jonny,
ich habe mir noch mal alles durchgelesen (auch deine frühere Frage "Schummeleditor") und mich gefragt (weil heute Ostern ist ;-)), ob dir mit einem konkreten Beispiel vielleicht besser geholfen werden kann. Hier mal ein Entwurf, der möglicherweise Hilfreich ist:
Die Klasse "Player". Jeder Player bekommt später seine eigene Instanz :
public class Player { private int mScore; public int Score { get { return mScore; } set { mScore = value < 0 ? 0 : value; } } private string mPlayerName; public string PlayerName { get { return mPlayerName; } set { mPlayerName = string.IsNullOrEmpty(value) || value.Trim() == string.Empty ? "-" : value; } } public Player(int pScore, string pPlayerName) { Score = pScore; PlayerName = pPlayerName; } public Player() { Score = 0; PlayerName = "-"; } public Player Copy() { return new Player(Score, PlayerName); } public override string ToString() { return Score.ToString() + " " + PlayerName; } }
Und hier die Klasser "PlayerListe" zur Verwaltung der Player:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;public class PlayerListe { private List<Player> player; public PlayerListe() { player = new List<Player>(); Normalize(); } public PlayerListe(string pDatei) : this() { try { ReadTop10(pDatei); } catch ( Exception ) {} } public Player GetPlayer(int pPosition) { if ( pPosition < 0 || pPosition > 9 ) { return null; } return player[pPosition]; } public void SetPlayer(int pPosition, Player pPlayer, bool pAutoSort = true) { if ( pPosition < 0 || pPosition > 9 ) { return; } player[pPosition] = pPlayer; if (pAutoSort) { Normalize(); } } public void SetPlayer(int pPosition, int pScore, string pName, bool pAutoSort = true) { if (pPosition < 0 || pPosition > 9) { return; } player[pPosition].Score = pScore; player[pPosition].PlayerName = pName; if ( pAutoSort ) { Normalize(); } } public void SetPlayer(int pPosition, int pScore, bool pAutoSort = true) { if ( pPosition < 0 || pPosition > 9 ) { return; } player[pPosition].Score = pScore; if ( pAutoSort ) { Normalize(); } } public void DeletePlayer(int pPosition, bool pAutoSort = true) { if ( pPosition < 0 || pPosition > 9 ) { return; } player[pPosition].Score = 0; player[pPosition].PlayerName = "-"; Normalize(); } public bool ReadTop10(string pFileName) { if ( !File.Exists(pFileName) ) { WriteTop10(pFileName); } using ( BinaryReader br = new BinaryReader(File.Open(pFileName, FileMode.Open, FileAccess.Read, FileShare.None)) ) { try { player.Clear(); for ( int i = 0 ; i < 10 ; i++ ) { player.Add(new Player(br.ReadInt32(), br.ReadString())); } return true; } catch ( Exception ) { // Fehlerbehandlung ergänzen return false; } } } public bool WriteTop10(string pFileName) { Normalize(); using ( BinaryWriter br = new BinaryWriter(File.Open(pFileName, FileMode.Create, FileAccess.Write, FileShare.None)) ) { try { for ( int i = 0 ; i < 10 ; i++ ) { br.Write(player[i].Score); br.Write(player[i].PlayerName); } return true; } catch ( Exception ) { // Fehlerbehandlung ergänzen return false; } } } public PlayerListe Copy() { PlayerListe myCpoy = new PlayerListe(); for (int i = 0 ; i< player.Count ; i++ ) { myCpoy.SetPlayer(i, player[i].Copy(), false); } return myCpoy; } private void Normalize() { if ( player.Count < 10 ) { int cnt = player.Count; for ( int i = cnt ; i < 10 ; i++ ) { player.Add(new Player(0,"-")); } } player = Sort(); if ( player.Count > 10 ) { for ( int i = player.Count ; i < 10 ; i-- ) { player.RemoveAt(i); } } return; } private List<Player> Sort() { IEnumerable<Player> sortiert = from p in player orderby p.Score descending, p.PlayerName ascending select p; return sortiert.ToList<Player>(); } }
Präsentation der Daten, Editor als WinForm. Auf das Form packst du 10 Textboxen, die du als textBoxName_n (n = 0 bis 9), 10 weitere Textboxen textBoxScore_n (n = 0 bis 9) und einen Button namens "buttonSpeichern:
using System; using System.Collections.Generic; using System.Windows.Forms; namespace Schummeleditor { public partial class FormEditor : Form { public FormEditor() { InitializeComponent(); } private PlayerListe myPlayers; private string datei = @"\score.dat"; private List<TextBox> nameBoxes; private List<TextBox> scoreBoxes; private void FormEditor_Load(object sender, EventArgs e) { nameBoxes = new List<TextBox>() { textBoxName_0, textBoxName_1, textBoxName_2, textBoxName_3, textBoxName_4,textBoxName_5, textBoxName_6, textBoxName_7,textBoxName_8, textBoxName_9 }; scoreBoxes = new List<TextBox>() { textBoxScore_0, textBoxScore_1, textBoxScore_2, textBoxScore_3, textBoxScore_4,textBoxScore_5, textBoxScore_6, textBoxScore_7,textBoxScore_8, textBoxScore_9 }; LoadToEditor(); } private void buttonSpeichern_Click(object sender, EventArgs e) { StorePlayers(); } private void LoadToEditor() { myPlayers = new PlayerListe(datei); for (int i=0 ; i < 10 ; i++ ) { nameBoxes[i].Text = myPlayers.GetPlayer(i).PlayerName; scoreBoxes[i].Text = myPlayers.GetPlayer(i).Score.ToString(); } } public void StorePlayers() { // Anwendung: .SetPlayer(Postition, Score, Name, Sortieren)... for ( int i = 0 ; i < 10 ; i++ ) { int score; if (int.TryParse(scoreBoxes[i].Text, out score) && score >= 0) { myPlayers.SetPlayer(i, score, nameBoxes[i].Text, false); } } myPlayers.WriteTop10(datei); LoadToEditor(); } } }
Die Präsentation der Daten musst du natürlich ggf. anpassen.
Gruß
-
Hallo,
Erstmal vielen lieben Dank das du Dir die Riesen Mühe gemacht hast dich mir anzunehmen.
Dafür riesen Respekt von mir.
Ich habe mir erlaubt deinen Code in einer neuen Form zu übernhemen.
habe alles so übernommen wie du es Geschrieben hast.
bekomme 13 Fehlermeldungen....
hattest du deinen Code probiert?
Mit freundlichen Grüßen
und ein Schönes Osterfest
-
Hallo,
ja doch, läuft hier einwandfrei. Ich sagte ja "die Präsentation ... anpassen", also die Form-Klasse. Allerdings habe ich es mir gespart, die Designer-Datei auch hier her zu kopieren, sorry.
Denk auch daran, dass das "Form" hier "FormEditor" genannt wurde und nicht Form1.
Lege noch mal etwas Hand an, im Konstruktor des Forms die kursiven Zeilen ergänzen... (die Eventhandler werden normal automatisch generiert, wenn du im Designer einen Doppelklick auf den Fensterrahmen bzw. Button machst. Beim Copy/Paste müsstest du aber auch dann etwas Hand anlegen).
public FormEditor() { InitializeComponent(); this.buttonSpeichern.Click += new EventHandler(this.buttonSpeichern_Click); this.Load += FormEditor_Load; }
und in Program.cs die Run-Anweisung anpassen (Namespace beachten):
Application.Run(new Schummeleditor.FormEditor());
Das müsste dann aber gehen.
Sonst musst du die Fehler mal näher beschreiben.
Gruß (und ebenfalls frohe Ostern)
- Bearbeitet K. Pater Sonntag, 27. März 2016 23:18
-
Hallo Du,
Ich bins mal wieder der Nervige......
Ich hab jetzt zwei tage lang probiert den Code von dir zum laufen zu bringen ich raff es einfach nicht.....
wenn der Code so steht wie er jetzt ist kommt die Fehler meldung:::
Fehler 1 Der Typ- oder Namespacename 'PlayerListe' konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) C:\Users\Documents\Visual Studio 2012\Projects\Pong\Pong\SchummeleditorDialog.cs 25 17 Pong
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace Pong { public partial class FormEditor : Form { public FormEditor() { InitializeComponent(); this.Speichern.Click += new EventHandler(this.buttonSpeichern_Click); this.Load += FormEditor_Load; } private PlayerListe myPlayers;// hier kommt der Fehler private string datei = @"\score.dat"; private List<TextBox> nameBoxes; private List<TextBox> scoreBoxes; private void FormEditor_Load(object sender, EventArgs e) { nameBoxes = new List<TextBox>() { textBoxName_0, textBoxName_1, textBoxName_2, textBoxName_3, textBoxName_4,textBoxName_5, textBoxName_6, textBoxName_7,textBoxName_8, textBoxName_9 }; scoreBoxes = new List<TextBox>() { textBoxScore_0, textBoxScore_1, textBoxScore_2, textBoxScore_3, textBoxScore_4,textBoxScore_5, textBoxScore_6, textBoxScore_7,textBoxScore_8, textBoxScore_9 }; LoadToEditor(); } private void buttonSpeichern_Click(object sender, EventArgs e) { StorePlayers(); } private void LoadToEditor() { myPlayers = new PlayerListe(datei); for (int i = 0; i < 10; i++) { nameBoxes[i].Text = myPlayers.GetPlayer(i).PlayerName; scoreBoxes[i].Text = myPlayers.GetPlayer(i).Score.ToString(); } } public void StorePlayers() { // Anwendung: .SetPlayer(Postition, Score, Name, Sortieren)... for (int i = 0; i < 10; i++) { int score; if (int.TryParse(scoreBoxes[i].Text, out score) && score >= 0) { myPlayers.SetPlayer(i, score, nameBoxes[i].Text, false); } } myPlayers.WriteTop10(datei); LoadToEditor(); } class Player:IComparable { public class Player { private int mScore; public int Score { get { return mScore; } set { mScore = value < 0 ? 0 : value; } } private string mPlayerName; public string PlayerName { get { return mPlayerName; } set { mPlayerName = string.IsNullOrEmpty(value) || value.Trim() == string.Empty ? "-" : value; } } public Player(int pScore, string pPlayerName) { Score = pScore; PlayerName = pPlayerName; } public Player() { Score = 0; PlayerName = "-"; } public Player Copy() { return new Player(Score, PlayerName); } public override string ToString() { return Score.ToString() + " " + PlayerName; } } class Playerliste { public class PlayerListe { private List<Player> players; public PlayerListe() { player = new List<Player>(); Normalize(); } public PlayerListe(string pDatei) : this() { try { ReadTop10(pDatei); } catch (Exception) { } } public Player GetPlayer(int pPosition) { if (pPosition < 0 || pPosition > 9) { return null; } return Player[pPosition]; } public void SetPlayer(int pPosition, Player pPlayer, bool pAutoSort = true) { if (pPosition < 0 || pPosition > 9) { return; } players[pPosition] = pPlayer; if (pAutoSort) { Normalize(); } } public void SetPlayer(int pPosition, int pScore, string pName, bool pAutoSort = true) { if (pPosition < 0 || pPosition > 9) { return; } players[pPosition].Score = pScore; players[pPosition].PlayerName = pName; if (pAutoSort) { Normalize(); } } public void SetPlayer(int pPosition, int pScore, bool pAutoSort = true) { if (pPosition < 0 || pPosition > 9) { return; } players[pPosition].Score = pScore; if (pAutoSort) { Normalize(); } } public void DeletePlayer(int pPosition, bool pAutoSort = true) { if (pPosition < 0 || pPosition > 9) { return; } players[pPosition].Score = 0; players[pPosition].PlayerName = "-"; Normalize(); } public bool ReadTop10(string pFileName) { if (!File.Exists(pFileName)) { WriteTop10(pFileName); } using (BinaryReader br = new BinaryReader(File.Open(pFileName, FileMode.Open, FileAccess.Read, FileShare.None))) { try { players.Clear(); for (int i = 0; i < 10; i++) { players.Add(new Player(br.ReadInt32(), br.ReadString())); } return true; } catch (Exception) { // Fehlerbehandlung ergänzen return false; } } } public bool WriteTop10(string pFileName) { Normalize(); using (BinaryWriter br = new BinaryWriter(File.Open(pFileName, FileMode.Create, FileAccess.Write, FileShare.None))) { try { for (int i = 0; i < 10; i++) { br.Write(players[i].Score); br.Write(players[i].PlayerName); } return true; } catch (Exception) { // Fehlerbehandlung ergänzen return false; } } } public PlayerListe Copy() { PlayerListe myCpoy = new PlayerListe(); for (int i = 0; i < players.Count; i++) { myCpoy.Setplayer(i, players[i].Copy(), false); } return myCpoy; } private void Normalize() { if (players.Count < 10) { int cnt = players.Count; for (int i = cnt; i < 10; i++) { players.Add(new Player(0, "-")); } } players = Sort(); if (players.Count > 10) { for (int i = players.Count; i < 10; i--) { players.RemoveAt(i); } } return; } private List<Player> Sort() { IEnumerable<Player> sortiert = from p in players orderby p.Score descending, p.PlayerName ascending select p; return sortiert.ToList<Player>(); } } } } } }
Ich weiß nicht was ich noch tun soll.
MFG
jonny
-
Hallo Jonny,
Du hast da einiges falsch gemacht beim Einfügen des Codes, ...und danach. Die beiden Klassen "Player" und "PlayerListe" hast du innerhalb der Formklasse abgelegt und zusätzlich nochmal mit einer Klasse "Player:IComparable" umhüllt. Dann hast du einige Feldnamen verändert bzw. vermutlich versucht zu korrigieren.
Der Hauptfehler aber, ... geschachtelt, geschachtelt, ...
Was willst du denn damit erreichen? Wenn du in die Gliederungsansicht umschaltest, kannst du die Struktur besser erkennen. Wenn du dann über die rot markierten Stellen hooverst, bekommst du Tooltips angezeigt, deren Inhalt du nicht ignorieren kannst.
Nun, um es abzukürzen und dir nicht dir Freude an der Sache zu nehmen, kannst du dir das kleine Projekt hier herunterladen: schummeleditor.zip
Ansonsten könnte ich dir jetzt nur triviale Ratschläge geben. Ich hoffe aber, dass du so damit erst mal weiterkommst.
Gruß
-
Hallo K.Pater,
Vielen Dank erstmal für deine Mühe und Hilfe.
Ich schaue mir das ganze später mal an.
Wenn ich etwas nicht verstehe würde ich dir gerne Fragen stellen wo was gemacht wird damit ich es verstehe und auch einen Lerneffekt hab und nicht nur blind kopiere......
wenn es Okay für dich ist:
MFG
-
Wenn ich etwas nicht verstehe würde ich dir gerne Fragen stellen wo was gemacht wird damit ich es verstehe und auch einen Lerneffekt hab und nicht nur blind kopiere......
wenn es Okay für dich ist:
Hallo Jonny,
natürlich ist das Okay. Dafür ist dieses Forum ja da.
Gruß
-
Hallo K. Pater,
Ich hab noch mal eine Frage
und zwar ich möchte das mir die vorhandene Score.dat datei eingelsen wird und angezeigt wird in den Textboxen.
Dein Programm läuft soweit aber es werden mir keine vorhanden Einträge angeziegt, und wenn ich die Textboxen fülle dann Speichert er mir das Zwar aber nicht in die Datei Score..
habe ein wenig probiert nun sagt mir der kompliler folgenden fehler:
Fehler 1 'System.IO.BinaryReader' enthält keine Definition für 'Write', und es konnte keine Erweiterungsmethode 'Write' gefunden werden, die ein erstes Argument vom Typ 'System.IO.BinaryReader' akzeptiert (Fehlt eine Using-Direktive oder ein Assemblyverweis?). C:\Users\Desktop\Neuer Ordner (2)\PlayerListe.cs 110 9 Schummeleditor
public bool WriteTop10(string pFileName) { Normalize(); FileStream fStream = new FileStream(pFileName, FileMode.Create); BinaryReader br = new BinaryReader(fStream); using (fStream) { try { for ( int i = 0 ; i < 10 ; i++ ) { br.Write(player[i].Score); // Fehler hier br.Write(player[i].PlayerName); // und Fehler hier } return true; } catch ( Exception ) { // Fehlerbehandlung ergänzen return false; } } }
hmmm hab die datei auch die verändert :
also da ist die Datei score.dat vorhanden .
private string datei = System.Windows.Forms.Application.StartupPath + "\\score.dat";
aber er öffnet sie mir nicht leider.
Gruß
Jonny
-
Hallo Jonny,
die Methode "WriteTop10" hast du so modifiziert, dass es nicht gehen kann.
Die "using"-Anweisung soll sicherstellen, dass dein "Disposable"-Objekt auch entsorgt wird.
using (...Objekt erstellen...)
{
... mit Objekt arbeiten
} // hier wird praktisch "Dispose" ausgeführt.
Weiteres siehe hier...
Wenn du die Methode "WriteTop10" umschreiben willst, dann versuche es mal komplett ohne Copy/Paste.
public bool WriteTop10(string pFileName) { Normalize(); using ( FileStream fStream = new FileStream(pFileName, FileMode.Create) ) { using ( BinaryWriter br = new BinaryWriter(fStream) ) { try { for ( int i = 0 ; i < 10 ; i++ ) { br.Write(player[i].Score); br.Write(player[i].PlayerName); } // Ende "for" return true; } // Ende "try" catch ( Exception ) { // Fehlerbehandlung ergänzen return false; } // Ende "catch" } // Ende "using ... br } // Ende "using ... fStream } // Ende Methode
Wenn du "schreiben" willst, musst du auch den "BinaryWriter" nehmen, der "BinaryReader" hat keine Write-Methode. Aber warum möchtest du die Methode ändern? Wenn es die Datei score.dat im angegebenen Verzeichnis geben sollte, wird es auch funktionieren. Überprüfe lieber, ob die Datei existiert.
Wenn dir keine Einträge angezeigt werden, ist die Datei vermutlich nicht vorhanden oder nicht lesbar. Du kannst ja mal die "ReadTop10"-Methode modifizieren und 1 Zeile einfügen:
public bool ReadTop10(string pFileName) { if ( !File.Exists(pFileName) ) { // Diese Zeile einfügen System.Windows.Forms.MessageBox.Show("Die Datei: " + pFileName + " ist nicht vorhanden und wird jetzt erstellt."); WriteTop10(pFileName); } ...
Vielleicht arbeitest du auch mal vorab noch etwas an den Grundlagen zu c#, weil die Fehler zeigen, dass da noch nicht alles sitzt. Hier findest du einige Quellen...
Gruß
- Als Antwort markiert jonnywhite7 Samstag, 16. April 2016 16:05
-
Hallo K.Pater,
Vielen Dank für deine reichliche Hilfe.
Ich habe mir dein Programm aungeschaut und auch deine Hilfestellung ...
Nun habe ich klange gekrübelt und überlegt und habe folgendes Programm geschrieben und sieh da es Funktioniert...
Nochmals vielen Dank..
namespace Einsendeaufgabe_15B_Schummeleditor { public partial class Form1 : Form { //die Felder //für die Anzahl der Einträge in der Liste int anzahl = 10; //für die Liste Liste[] bestenliste; string dateiname; //die Methoden //der Konstructor public Form1() { InitializeComponent(); // eine neue Instanz der Liste erstellen bestenliste = new Liste[anzahl]; //die Elemente initialisieren for (int i = 0; i < anzahl; i++) bestenliste[i] = new Liste(); } //zum Lesen aus der Datei void lesePunkte() { //zum Zwischenspeichern der gelesenen Daten int tempPunkte; string tempName; //eine neue instanz von FileStream erzeugen //die Datei soll geöffnet werden FileStream fStream = new FileStream(dateiname, FileMode.Open); //eine neue Instanz von BinaryReader auf der Basis von fStream erzeugen BinaryReader binaerDatei = new BinaryReader(fStream); //die Einträge lesen und zuweisen for (Int32 i = 0; i < anzahl; i++) { //die Punkte //und die Namen tempPunkte = binaerDatei.ReadInt32(); tempName = binaerDatei.ReadString(); switch (i) { case 0: textBoxPunkte_1.Text = Convert.ToString(tempPunkte); textBoxName_1.Text = tempName; break; case 1: textBoxPunkte_2.Text = Convert.ToString(tempPunkte); textBoxName_2.Text = tempName; break; case 2: textBoxPunkte_3.Text = Convert.ToString(tempPunkte); textBoxName_3.Text = tempName; break; case 3: textBoxPunkte_4.Text = Convert.ToString(tempPunkte); textBoxName_4.Text = tempName; break; case 4: textBoxPunkte_5.Text = Convert.ToString(tempPunkte); textBoxName_5.Text = tempName; break; case 5: textBoxPunkte_6.Text = Convert.ToString(tempPunkte); textBoxName_6.Text = tempName; break; case 6: textBoxPunkte_7.Text = Convert.ToString(tempPunkte); textBoxName_7.Text = tempName; break; case 7: textBoxPunkte_8.Text = Convert.ToString(tempPunkte); textBoxName_8.Text = tempName; break; case 8: textBoxPunkte_9.Text = Convert.ToString(tempPunkte); textBoxName_9.Text = tempName; break; case 9: textBoxPunkte_10.Text = Convert.ToString(tempPunkte); textBoxName_10.Text = tempName; break; } //und jetzt zuweisen bestenliste[i].SetzeEintrag(tempPunkte, tempName); } //BinaryReader schließen binaerDatei.Close(); //und auch den Stream wieder fStream.Close(); } //zum Schreiben in die Datei void schreibePunkte() { //eine neue Instanz von FileStream erzeugen //die Datei soll entweder geöffnet oder neu erzeugt werden FileStream fStream = new FileStream(dateiname, FileMode.Create); //eine neue Instanz von BinaryWriter auf der Basis von fStream erzeugen BinaryWriter binaerDatei = new BinaryWriter(fStream); //die Einträge in die Datei schreiben for (Int32 i = 0; i < anzahl; i++) { //die Punkte und Namen switch (i) { case 0: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_1.Text)); binaerDatei.Write(textBoxName_1.Text); break; } case 1: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_2.Text)); binaerDatei.Write(textBoxName_2.Text); break; } case 2: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_3.Text)); binaerDatei.Write(textBoxName_3.Text); break; } case 3: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_4.Text)); binaerDatei.Write(textBoxName_4.Text); break; } case 4: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_5.Text)); binaerDatei.Write(textBoxName_5.Text); break; } case 5: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_6.Text)); binaerDatei.Write(textBoxName_6.Text); break; } case 6: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_7.Text)); binaerDatei.Write(textBoxName_7.Text); break; } case 7: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_8.Text)); binaerDatei.Write(textBoxName_8.Text); break; } case 8: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_9.Text)); binaerDatei.Write(textBoxName_9.Text); break; } case 9: { binaerDatei.Write(Convert.ToInt32(textBoxPunkte_10.Text)); binaerDatei.Write(textBoxName_10.Text); break; } } } //BinaryWriter schließen binaerDatei.Close(); //und auch den Stream wieder fStream.Close(); } //die Klasse für die Liste //Sie muss von der Klasse IComparable erben class Liste : IComparable { //die Felder int listePunkte; string listeName; //die Methoden //der Konstructor public Liste() { //er setzt die punkte und den Namen auf Standardwerte listePunkte = 0; listeName = "Nobody"; } //die Vergleichsmethode public int CompareTo(object objekt) { Liste tempListe = (Liste)(objekt); if (this.listePunkte < tempListe.listePunkte) return 1; if (this.listePunkte > tempListe.listePunkte) return -1; else return 0; } //die Methode zum Setzen von Einträgen public void SetzeEintrag(int punkte, string name) { listePunkte = punkte; listeName = name; } //die Methode zum liefern der Punkte public int GetPunkte() { return listePunkte; } //die Methode zum Liefern des Namens public string GetName() { return listeName; } } private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { dateiname = openFileDialog1.FileName; lesePunkte(); } private void Anzeigen_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); } private void Abbrechen_Click(object sender, EventArgs e) { Application.Exit(); } private void Speichern_Click(object sender, EventArgs e) { schreibePunkte(); } } }
Vielen Vielen Vielen Dank.