Hi,
ich wollte die Zahl 4031775092 als Dword in der Registry speichern und habs einfach nicht hinbekommen. Dann lese ich das hier: http://www.pcreview.co.uk/forums/thread-2422811.php
Sehr ärgerlich. Gibts ne Möglichkeit die Zahl trotzdem als dword in die Registry zu kriegen? Muss ich es per API-Call erledigen (hoffentlich gehts damit)?
partyboy
Naja, die Lösung wird doch schon in dem Thrad genannt. Einfach die Zahl auf die "brutale" Art(per unchecked Block) in die Variable haun, und dann müsste sie auch richtig in der Registry sein soweit ich den Beitrag verstanden hab.
Baka wa shinanakya naoranai.
Mein XING Profil.
Hi,
leider klappts nicht so einfach. Die Zahl passt nicht in eine int-Variable, es muss uint sein.
uint wird nicht von Microsoft.Win32.RegistryValueKind.DWord unterstützt.
Ich machs über die WinAPI.
partyboy
Mach nen Int64, zerleg den in 2 stirngs und für die beiden string wieder zusammen beim eintragen in die registry....?????
Gruss Ari
Wer lesen kann ist klar im vorteil!
MSDN
Dein Feund in allen fragen
.Net verhällt sich schon richtig: System.UInt32 ist nicht CLS-Konform und daher wird ein System.Int32-Wert erwartet. Beides sind 32bit Werte und sie können daher exakt die selben (Bit-)Werte aufnehmen - der Unterschied liegt nur in der Interpretation eben dieser. Ein DWORD ist nichts anders als ein unsigned int, was dem zu Folge auch bedeutet, dass z.B. -1 auch als UInt32.MaxValue interpretiert wird. Die passenden Integer-Werte erhälst du mittels unchecked((int)4031775092) [natürlich mit entsprechendem Wert].
Original von Kabelsalat
.Net verhällt sich schon richtig: System.UInt32 ist nicht CLS-Konform und daher wird ein System.Int32-Wert erwartet. Beides sind 32bit Werte und sie können daher exakt die selben (Bit-)Werte aufnehmen - der Unterschied liegt nur in der Interpretation eben dieser. Ein DWORD ist nichts anders als ein unsigned int, was dem zu Folge auch bedeutet, dass z.B. -1 auch als UInt32.MaxValue interpretiert wird. Die passenden Integer-Werte erhälst du mittels unchecked((int)4031775092) [natürlich mit entsprechendem Wert].
you rock!! 👍
Besten Dank, funktioniert wunderbar.
Stand übrigens auch bereits in dem von dir verlinkten Thread 😉
Hm, ein Problem habe ich noch. Wie bekomme ich den Wert jetzt wieder ausgelesen?
rkRun.GetValue("Wert") liefert mir -263192204 zurück, obowohl 4031775092 im Wert drinsteht.
Danke,
partyboy
Hallo partyboy,
unchecked Cast bloß andersherum. Warum das die Lösung ist, ergibt sich schon aus Kabelsalats Erklärung:
sie können daher exakt die selben (Bit-)Werte aufnehmen - der Unterschied liegt nur in der Interpretation eben dieser
herbivore
Dankeschön, hab nur eine Seite gecastet (geunboxed?). Jetzt kommt auf beiden Seiten -263192204 raus und der Vergleich klappt.
partyboy
Hallo partyboy,
geunboxed?
nö, hat nichts mit Boxing (oder Unboxing) zu tun.
Boxing und Unboxing (C#-Programmierhandbuch)
herbivore