Andy1988
23-03-2005, 21:04
Nabend ;)
Ich schreib grade in C# ein kleines Prog und stehe nun vor einem Problem. Ich lese einen Integer Wert aus der Registry aus. Nur lässt sich dieser irgendwie nicht vernünftig von einem object in einen int umwandeln! Er wirft mit immer eine InvalidCastException! Nur weiß ich nicht warum :D
Die Methode sieht so aus:
private int getdefaultsoll()
{
RegistryKey rk = Registry.CurrentUser.OpenSubKey("Software\\Stundenabrechnung");
if(rk == null)
{
MessageBox.Show("Der Registry Schlüssel fehlt. Es wird ein neuer erzeugt.", "Registry Schlüssel", MessageBoxButtons.OK, MessageBoxIcon.Information);
rk = Registry.CurrentUser.CreateSubKey("Software\\Stundenabrechnung");
rk.SetValue("defaultsoll", 8);
}
int rueckgabe = (int)rk.GetValue("defaultsoll", 8);
//MessageBox.Show(rueckgabe.ToString());
return rueckgabe;
}
Der Fehler liegt in der Zeile hier:
int rueckgabe = (int)rk.GetValue("defaultsoll", 8);
Wenn ich den default Wert zurückgeben lassen, den Wert aus der Registry also komplett lösche, läuft der Kram. Nur aus der Registry mag er wohl nicht!
edit:
Hab grad mal probiert, anstatt einer Zeichenfolge in der Registry einen DWORD Wert zu nehmen. Damit gehts, allerdings erstellt er, wenn der Schlüssel noch nich existiert (und somit auch nicht der Wert defaultsoll) wieder eine Zeichenfolge! Und für setValue() gibt es keinerlei Überladungen, mit denen ich als zusätzlichen Parameter einen Typen festlegen könnte! Ich kann also nicht festlegen, was für ein Typ der Wert sein soll!
Jemand ne Idee?
edit2:
problem gelöst!
Das Framework ist so intelligent und rafft automatisch, welcher Typ das ist und hat schon nen DWORD Wert erzeugt, wenn keiner da war. Was ich aber nicht kapier is, wie da ne Zeichenfolge rein kam! Ich hab die nämlich nich gesetzt *g*
Ich schreib grade in C# ein kleines Prog und stehe nun vor einem Problem. Ich lese einen Integer Wert aus der Registry aus. Nur lässt sich dieser irgendwie nicht vernünftig von einem object in einen int umwandeln! Er wirft mit immer eine InvalidCastException! Nur weiß ich nicht warum :D
Die Methode sieht so aus:
private int getdefaultsoll()
{
RegistryKey rk = Registry.CurrentUser.OpenSubKey("Software\\Stundenabrechnung");
if(rk == null)
{
MessageBox.Show("Der Registry Schlüssel fehlt. Es wird ein neuer erzeugt.", "Registry Schlüssel", MessageBoxButtons.OK, MessageBoxIcon.Information);
rk = Registry.CurrentUser.CreateSubKey("Software\\Stundenabrechnung");
rk.SetValue("defaultsoll", 8);
}
int rueckgabe = (int)rk.GetValue("defaultsoll", 8);
//MessageBox.Show(rueckgabe.ToString());
return rueckgabe;
}
Der Fehler liegt in der Zeile hier:
int rueckgabe = (int)rk.GetValue("defaultsoll", 8);
Wenn ich den default Wert zurückgeben lassen, den Wert aus der Registry also komplett lösche, läuft der Kram. Nur aus der Registry mag er wohl nicht!
edit:
Hab grad mal probiert, anstatt einer Zeichenfolge in der Registry einen DWORD Wert zu nehmen. Damit gehts, allerdings erstellt er, wenn der Schlüssel noch nich existiert (und somit auch nicht der Wert defaultsoll) wieder eine Zeichenfolge! Und für setValue() gibt es keinerlei Überladungen, mit denen ich als zusätzlichen Parameter einen Typen festlegen könnte! Ich kann also nicht festlegen, was für ein Typ der Wert sein soll!
Jemand ne Idee?
edit2:
problem gelöst!
Das Framework ist so intelligent und rafft automatisch, welcher Typ das ist und hat schon nen DWORD Wert erzeugt, wenn keiner da war. Was ich aber nicht kapier is, wie da ne Zeichenfolge rein kam! Ich hab die nämlich nich gesetzt *g*