![]() |
Registry und DWORDs
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:
aber DWORDs?
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; Auf einer Seite (muss ich mal suchen :oops:) 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:
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
RegistryKey reg = Registry.CurrentUser.CreateSubkey('Software\Testschlüssel');
System.UInt32 ui = 123456; reg.SetValue('Dword',(Int32)ui);
Delphi-Quellcode:
dann erzählt mir der Compiler, es gäbe keine Funktion von "SetValue", die ich so aufrufen könne. :cry:
var
ui : System.UInt32; begin { ... } ui := 123456; reg.SetValue('RegDword',Int32(ui)); { ... } end; Wo ist mein Fehler? |
Re: Registry und DWORDs
DWORDs sind Integers, Binärdaten muß man sich selber kümmern. Ich hab da auch ein Beispiel für jemanden in SL verfaßt gehabt, ich glaub hier war's drin:
http://assarbad.net/stuff/!export/regval.zip Wenn nicht, schreib mir mal ne Mail. Resultat können wir ja trotzdem hier veröffentlichen. |
Re: Registry und DWORDs
Nee, nee, @Assa. Das hat schon seinen Grund, warum es unter "Delphi .NET" steht. ;)
Ich rede in dem Fall vom Registry-Objekt, das vom .NET-Framework ("Microsoft.Win32"-Namespace) zur Verfügung gestellt wird. In einer WinForms-Anwendung, also nix mit VCL.NET. Nur der Vollständigkeit halber. |
Re: Registry und DWORDs
Wenn der Beitrag drüben in der rechten Navibar erscheint guck ich doch nicht auf die Rubrik ;)
Sprichst du eigentlich über die WMI-Klassen oder ist .NET nochmal komplett selbständig implementiert? Olli |
Re: Registry und DWORDs
Du kannst Fragen stellen. :oops: Das Registry-Objekt kommt, wie gesagt, aus dem "Microsoft.Win32"-Namespace und ist Teil des .NET-Framework. Ob dahinter nun noch mal WMI-Anweisungen stecken, das kann ich dir nicht sagen. Tut mir leid, aber so tief bin ich noch nicht in die Materie eingestiegen. ... Hatte ich auch nicht vor ... ;)
Edit: Zitat:
|
Re: Registry und DWORDs
Stimmt, ich überfliege alles. Und .NET und C# sagen mir immernoch nix ;)
|
Re: Registry und DWORDs
Mathias, keine Ahnung wo dein Problem ist:
Alle drei würden funktionieren...
Delphi-Quellcode:
Das ganze funktioniert auch ohne Umwege mit jedem Variablentyp, der mit Integer kompatibel ist (gerade getestet!)
reg.SetValue('DWORD_Val', Convert.ToInt32(ui));
reg.SetValue('DWORD_Val', Int32(ui)); reg.SetValue('DWORD_Val', ui); Mit den UIntXX-Typen muss man in D8 vorsichtig umgehen, ich habe damit schon einige komische Dinge erlebt, die mit einem Integer oder IntXX nicht auftraten. Edit: aus "Matthias" wurde "Mathias" :mrgreen: |
Re: Registry und DWORDs
Das Problem ist, dass bei mir keine der 3 Anweisungen funktioniert. Und da ich abgesehen von dieser hier
Delphi-Quellcode:
selbst alle schon ausprobiert habe, schiebe ich´s jetzt einfach mal auf das noch fehlende Update #2 für Delphi 8.
reg.SetValue('DWORD_Val', Convert.ToInt32(ui));
|
Re: Registry und DWORDs
Moin...
Das klingt nach einem verdammt guten Argument sein D8 auf den neuesten Stand zu bringen. :mrgreen: |
Re: Registry und DWORDs
@Mathias: Dann mußte morgen mal mitkommen nach CB. Da kannste es dir dann selber saugen ;)
Olli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz