Laden...

Windows Forms - Registry - Pong

Erstellt von Narya88 vor 2 Jahren Letzter Beitrag vor 2 Jahren 287 Views
Narya88 Themenstarter:in
13 Beiträge seit 2021
vor 2 Jahren
Windows Forms - Registry - Pong

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.
C
55 Beiträge seit 2020
vor 2 Jahren

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?

309 Beiträge seit 2020
vor 2 Jahren

Setz dir doch mal einen Breakpoint auf die SetValue Methoden und schau ob sich in der Registry auch was ändert.

Narya88 Themenstarter:in
13 Beiträge seit 2021
vor 2 Jahren

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.