Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - REG_DWORD (Win Registry) in normalen String umwandeln?


Experience1986 - Mi 28.01.04 18:43
Titel: REG_DWORD (Win Registry) in normalen String umwandeln?
Hi,

Ich habe eine Funktio, die mir aus einem Pfad in der Registry einen String / Integer auslliest. Nun muss ich aus der Windows Registry einen "REG_DWORD"-Wert auslesen, dieser scheint ein Binärer/Hexadezimaler Wert zu sein, ich brauche ihn aber als Integer, verständlich *g*


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function MyRegIntR(vRegbaum:Cardinal;vPfad,vName:string):integer;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := vRegBaum;
    if Reg.OpenKey(vPfad, True) then
    begin
      Result:=Reg.ReadInteger(vName);
      Reg.CloseKey;
     end;
  finally
    Reg.Free;
  end;
end;


Diese Funktion liest Integer aus, besitze aber noch fast die gleich die mir eben Strings ausliest.

Wie kann ich nun diesen Datentyp umwandeln?

In meinem Fall: MyRegIntR(HKEY_CURRENT_USER,'Software\Microsoft\Command Processor','DefaultColor')

bekomme ich den Wert/Integer 112 zurück, aber der Wert ist eiggentlich 70, Standardmäßig sollte dieser Wert in der Win-Registry auf 0 oder so stehen.

Ich hoffe ich hab mein Problem deutlich geschilder und ihr könnt mir helfen.

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt


Delete - Mi 28.01.04 19:19

Also REG_DWORD ist einganz normaler Integer.


Experience1986 - Mi 28.01.04 19:26

dachte ich mri auch, aber windows scheitn diese zahl nach irgendeinem system umzuformen.

Nur nach welchem?


Delete - Mi 28.01.04 19:56

Glaube ich nicht. Ich hatte bisher keine Probleme Integers aus der Registry zu lesen.


Experience1986 - Mi 28.01.04 20:43

Aber in dem Falll muss man die "70" angeben, diese 70 steht für eine Farbe des Vorder und Hintergrunds in der Eingabe aufforderung.

Befehel: color 70

Nun kann ich nicht das System von Windows eraten, da muss es doch etwa sgeben.


Christian S. - Mi 28.01.04 20:51

Hallo!

70 (hex) = 112 (dez)

Du kannst also munter das ausrechnen, was Du brauchst.

MfG
Peter


Experience1986 - Mi 28.01.04 21:03

Hab endlich ne Lösung:


Delphi-Quelltext
1:
2:
3:
    // Wandelt den Hex-Wert aus der Registry in einen String um
    // Gegebstück: inttostr(strtoint('$'+TXT_CMD_DEFAULCOLOR.Text))
    TXT_CMD_DEFAULCOLOR.Text:=IntToHex(MyRegIntR(HKEY_CURRENT_USER,'Software\Microsoft\Command Processor','DefaultColor'),1);


Weis zwar nit wie es geht, aber es geht *G*

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt


Christian S. - Mi 28.01.04 21:08

Hallo!

Schön, dass Du jetzt eine Lösung hast. Darauf wäre auch mein Tipp hinausgelaufen.

Bitte benutze demnächst die Delphi-Tags. Durch die Delphi-Tags wird der Code mit Syntax-Highlighting angezeigt und ist somit sehr viel übersichtlicher.

Viele Dank!
Peter


Experience1986 - Mi 28.01.04 23:17

ok, hab ich vergessen