Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Windows Forms - Registry - Pong
Narya88
myCSharp.de - Member

Avatar #2CIBk4PrRqXCixyQys7R.png


Dabei seit:
Beiträge: 9

Themenstarter:

Windows Forms - Registry - Pong

beantworten | zitieren | melden

Hallo!

Ich möchte die Einstellungen eines Spiels - Pong in der Registrierung speichern.
Dies sind die zugehörigen Methoden.


internal void SchreibeEinstellungen()
        {
            //den Schlüssel HKEY_CURRENT_USER\Software\RegistryPong
            //anlegen bzw. öffnen
            using (RegistryKey regSchluessel = Registry.CurrentUser.CreateSubKey("Software\\RegistryPong"))
            {
                //den Wert aus dem Eingabefeld in den Eintrag schreiben
                regSchluessel.SetValue("Breite", this.Width);
                regSchluessel.SetValue("Hoehe", this.Height);
                regSchluessel.SetValue("Schwierigkeit", this.schwierigkeit);
            }
        }

        internal void LeseEinstellungen()
        {
            //den Schlüssel
            //HKEY_CURRENT_USER\Software\RegistryPong öffnen
            using (RegistryKey regSchluessel = Registry.CurrentUser.OpenSubKey("Software\\RegistryPong"))
            {
                //wenn der Schlüssel nicht vorhanden ist, Default Werte verwenden
                if (regSchluessel == null)
                {
                    return;
                }

                // Lese Werte aus Registry
                var val = regSchluessel.GetValue("Breite");
                if (val != null)
                {
                    this.Width = (int)val;
                }
                val = regSchluessel.GetValue("Hoehe");
                if (val != null)
                {
                    this.Height = (int)val;
                }
                val = regSchluessel.GetValue("Schwierigkeit");
                if (val != null)
                {
                    this.schwierigkeit = (int)val;
                }
            }
        }

Nun schreibe ich die Einstellungen bevor die Anwendung beendet wird und lese sie nach InitializeComponent(); aus.

Was aber nicht funktioniert, es werden nach Neustart wieder die Standardwerte übergeben. In der Registrierung selbst ändert sich nichts.

Was mache ich falsch?

Danke
Ein Zauberer kommt nie zu spät, ebenso wenig zu früh. Er trifft genau dann ein, wenn er es beabsichtigt.
private Nachricht | Beiträge des Benutzers
ClaraSoft
myCSharp.de - Member



Dabei seit:
Beiträge: 43

beantworten | zitieren | melden

Guten Morgen,

Könnte sein das SchreibeEinstellungen überhaupt nicht aufgerufen wird oder das das Program keine Berechtigung hat in die Registry schreiben, weil sonst sehe ich da keinen Fehler.

Mit der Registry sollte man vorsichtig sein, wenn man nicht weiß was man da macht. Ich würde die Einstellungen eher in eine csv, json oder xml Datei schreiben, statt in die Registry. Daher die Frage müssen die Einstellungen wirklich in der Registry gespeichert werden?
private Nachricht | Beiträge des Benutzers
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 297

beantworten | zitieren | melden

Setz dir doch mal einen Breakpoint auf die SetValue Methoden und schau ob sich in der Registry auch was ändert.
private Nachricht | Beiträge des Benutzers
Narya88
myCSharp.de - Member

Avatar #2CIBk4PrRqXCixyQys7R.png


Dabei seit:
Beiträge: 9

Themenstarter:

beantworten | zitieren | melden

Die Einstellungen werden korrekt in die Registrierung geschrieben.

Ja, das Arbeiten mit der Registrierung ist vorgeschrieben. Ich studiere Softwareentwicklung mit C# und dies ist eine Aufgabenstellung.

Die Funktion LeseEinstellungen() hab ich jetzt kurz vor SetzeSpielfeld() gesetzt und jetzt übernimmt er die Einstellungen aus dem Key.

Zuvor hatte ich die Einstellungen direkt nach dem Initialisieren gesetzt, wo sie ja später noch durch die Standardwerte ersetzt werden.

dummer Anfängerfehler

Danke für eure Hilfe!
Ein Zauberer kommt nie zu spät, ebenso wenig zu früh. Er trifft genau dann ein, wenn er es beabsichtigt.
private Nachricht | Beiträge des Benutzers