none
Mehrer Textboxen auslesen RRS feed

  • 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

    Freitag, 25. März 2016 22:50

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
    Mittwoch, 30. März 2016 17:50

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ß

    Freitag, 25. März 2016 23:45
  • 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

    Samstag, 26. März 2016 19:46
  • 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ß

    Sonntag, 27. März 2016 11:10
  • 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

    Sonntag, 27. März 2016 20:20
  • 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
    Sonntag, 27. März 2016 22:53
  • 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

    Dienstag, 29. März 2016 15:48
  • 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ß

    Dienstag, 29. März 2016 17:54
  • 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

    Mittwoch, 30. März 2016 02:40
  • 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ß

    Mittwoch, 30. März 2016 09:53
  • 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

    Mittwoch, 30. März 2016 15:09
  • 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
    Mittwoch, 30. März 2016 17:50
  • 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.

    Freitag, 8. April 2016 17:35