C-Sharp, Umwandlung Registry Zeitwerte in String
Hallo Leute,
stehe mir gerade selbst auf der Leitung und komme nicht weiter, vermutlich sehe ich den Wald vor lauter Bäumen nicht
Ich möchte ein C# Programm erweitern indem ich eine Zeitangabe, die in der Registry steht, auslese und anzeige.
Auslesen kein Problem, das Anzeigen prinzipiell auch nicht, wenn ich denn die Zeit in einen String konvertiert bekommen würde.
Das Ergebnis des Registryzugriffs gibt einen Wert vom Type object zurück, die Konvertierung erwartet den Type long. Wenn ich ein casting auf long einbaue kommt eine Fehlermeldung, dass die angegebene Umwandlung ungültig ist..
Hier der Code Schnipsel (der wegen der diversen Tests nicht ganz optimal ist aber das kann man ja später anpassen)
Bin für jeden Tipp dankbar ..
Gruß Nobby
stehe mir gerade selbst auf der Leitung und komme nicht weiter, vermutlich sehe ich den Wald vor lauter Bäumen nicht
Ich möchte ein C# Programm erweitern indem ich eine Zeitangabe, die in der Registry steht, auslese und anzeige.
Auslesen kein Problem, das Anzeigen prinzipiell auch nicht, wenn ich denn die Zeit in einen String konvertiert bekommen würde.
Das Ergebnis des Registryzugriffs gibt einen Wert vom Type object zurück, die Konvertierung erwartet den Type long. Wenn ich ein casting auf long einbaue kommt eine Fehlermeldung, dass die angegebene Umwandlung ungültig ist..
Hier der Code Schnipsel (der wegen der diversen Tests nicht ganz optimal ist aber das kann man ja später anpassen)
object Zeito = (tempKey.GetValue(valueName));
long Zeit = (long) Zeito;
node.Nodes.Add(valueName + ":---------------: " + DateTime.FromBinary(Zeit).ToString("dd.MM.yyyy hh:mm:ss"));
Gruß Nobby
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 122790
Url: https://administrator.de/forum/c-sharp-umwandlung-registry-zeitwerte-in-string-122790.html
Ausgedruckt am: 23.12.2024 um 05:12 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
ohne zu wissen, wie Datumswerte in der Registry gespeichert werden: Eine Konvertierung String -> Long sollte mit Convert.ToInt64(string) funktionieren, siehe http://msdn.microsoft.com/en-us/library/system.convert.toint64(VS.71).a ...
Was du versucht hast ("(long)") ist keine Konvertierung, sondern ein Type-Cast.
Gruß
Filipp
ohne zu wissen, wie Datumswerte in der Registry gespeichert werden: Eine Konvertierung String -> Long sollte mit Convert.ToInt64(string) funktionieren, siehe http://msdn.microsoft.com/en-us/library/system.convert.toint64(VS.71).a ...
Was du versucht hast ("(long)") ist keine Konvertierung, sondern ein Type-Cast.
Gruß
Filipp
casting auf
Uint64 klappt genau so wenig
Was klappt denn daran nicht? Gegebenenfalls musst du vorher das Object in einen String konvertieren (ich dachte aber, da wird ein impliziter Cast gemacht). Also Zeit = Convert.ToInt64(Zeito.ToString());Uint64 klappt genau so wenig
Ach ja, manchmal lohnt es sich, gepostet Links zu lesen. Es gibt eine Überladung ToInt64(object). Diese fordert jedoch, dass object IConvertible implementiert, was deins wahrscheinlich nicht tut. Dann ist klar, dass nicht implizit gecastet wird (eine passend Überladung wurde ja gefunden), sondern du explizit in String wandeln musst.
Gruß
Filipp
und genau das klappt nicht ... alle Kovertierungsfunktionen die ich
versuche zu verwenden wollen object nicht
Kann ich mich nur wiederholen: Was klappt denn daran nicht? Fehler zur Compile- oder zur Laufzeit? Fehlermeldung? Mal getestet, ob dein object vielleicht null ist? Ziemlich sicher implementiert object eine .ToString()-Methode, die dann ziemlich sicher auch ein String zurückgibt. Somit ist das Problem nicht mehr, dass "alle Kovertierungsfunktionen" object "nicht wollen"... daneben verfügt object auch über eine GetType-Methode, die man ja spaßeshalber auch mal verwenden kann.versuche zu verwenden wollen object nicht
Ja, das object hat eine ToString Methode. Aber bei diesem
Registry-Schlüssel wandelt die in den Text:
"System.Byte" und das ist natürlich nicht das Ziel.
Das war das, was ich mit "ohne zu wissen, wie Datumswerte in der Registry gespeichert werden" meinte. Einen Byte-Array bekommt man so natürlich nicht in ein long. Ich war von einem QWord-Typ ausgegangen..Registry-Schlüssel wandelt die in den Text:
"System.Byte" und das ist natürlich nicht das Ziel.
http://msdn.microsoft.com/de-de/library/microsoft.win32.registrykey.get ... verrät die möglichen Speichertypen, und wie man sie bearbeitet.
Gruß
Filipp