Hat jemand schon mal DWORDs und binäre Daten in der Registry gespeichert?
Also, Strings (REG_SZ) und Arrays (REG_MULTI_SZ) sind ja kein Thema:
Delphi-Quellcode:
procedure TWinForm.Button2_Click(sender: System.Object; e: System.EventArgs);
var
reg : RegistryKey;
arg : array of string;
begin
try
reg := Registry.CurrentUser.CreateSubKey('Software\Testschlüssel');
except
reg := nil;
end;
if(reg <> nil) then
begin
// REG_SZ
reg.SetValue('RegSZ',string('Hallo, Welt!'));
// REG_MULTI_SZ
SetLength(arg,2);
arg[0] := 'Hallo';
arg[1] := 'Welt!';
reg.SetValue('RegMultiSZ',arg);
SetLength(arg,0);
reg.Free;
end;
end;
aber DWORDs?
Auf einer Seite (muss ich mal suchen
) las ich, dass es beim Speichern von sehr großen Integer-Werten einen Bug im .NET-Framework geben soll. Als Workaround wurde das Typecasting als "Int32" empfohlen, was in C# (glaube ich) in etwa so aussah:
Code:
RegistryKey reg = Registry.CurrentUser.CreateSubkey('Software\Testschlüssel');
System.UInt32 ui = 123456;
reg.SetValue('Dword',(Int32)ui);
Is aus´m Kopf geschrieben, weil ich die Seite gerade nicht parat habe. Wie gesagt: Es ging auf der Seite eigentlich um einen Bug, aber zumindest sah ich damit einen Ansatz zum Speichern von DWORDs. Wenn ich allerdings versuche, dieses Prinzip in Delphi umzusetzen
Delphi-Quellcode:
var
ui : System.UInt32;
begin
{ ... }
ui := 123456;
reg.SetValue('RegDword',Int32(ui));
{ ... }
end;
dann erzählt mir der Compiler, es gäbe keine Funktion von "SetValue", die ich so aufrufen könne.
Wo ist mein Fehler?