AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Registry und DWORDs

Ein Thema von MathiasSimmack · begonnen am 27. Apr 2004 · letzter Beitrag vom 16. Jun 2004
Antwort Antwort
Seite 1 von 3  1 23      
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Registry und DWORDs

  Alt 27. Apr 2004, 10:55
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?
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#2

Re: Registry und DWORDs

  Alt 27. Apr 2004, 11:57
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.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Registry und DWORDs

  Alt 27. Apr 2004, 13:15
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.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#4

Re: Registry und DWORDs

  Alt 27. Apr 2004, 13:20
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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Registry und DWORDs

  Alt 27. Apr 2004, 13:42
Du kannst Fragen stellen. 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:
Wenn der Beitrag drüben in der rechten Navibar erscheint guck ich doch nicht auf die Rubrik
Was aber auch der Beweis ist, dass du meinen Text nur überflogen hast. Da kommen nämlich die Zauberworte drin vor.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#6

Re: Registry und DWORDs

  Alt 27. Apr 2004, 14:12
Stimmt, ich überfliege alles. Und .NET und C# sagen mir immernoch nix
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Registry und DWORDs

  Alt 28. Apr 2004, 23:44
Mathias, keine Ahnung wo dein Problem ist:
Alle drei würden funktionieren...
Delphi-Quellcode:
  reg.SetValue('DWORD_Val', Convert.ToInt32(ui));
  reg.SetValue('DWORD_Val', Int32(ui));
  reg.SetValue('DWORD_Val', ui);
Das ganze funktioniert auch ohne Umwege mit jedem Variablentyp, der mit Integer kompatibel ist (gerade getestet!)

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"
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#8

Re: Registry und DWORDs

  Alt 29. Apr 2004, 07:00
Das Problem ist, dass bei mir keine der 3 Anweisungen funktioniert. Und da ich abgesehen von dieser hier
reg.SetValue('DWORD_Val', Convert.ToInt32(ui)); selbst alle schon ausprobiert habe, schiebe ich´s jetzt einfach mal auf das noch fehlende Update #2 für Delphi 8.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Registry und DWORDs

  Alt 29. Apr 2004, 08:43
Moin...
Das klingt nach einem verdammt guten Argument sein D8 auf den neuesten Stand zu bringen.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#10

Re: Registry und DWORDs

  Alt 29. Apr 2004, 09:35
@Mathias: Dann mußte morgen mal mitkommen nach CB. Da kannste es dir dann selber saugen

Olli
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz