Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Binär Wert in die Registy schreiben (https://www.delphipraxis.net/37008-binaer-wert-die-registy-schreiben.html)

exe1972 29. Dez 2004 15:16


Binär Wert in die Registy schreiben
 
Hallo,
ich möchte in der Registry, einen vorhandenen Binären Eintrag ändern.
Dieser Registry Eintrag soll die Modemeinstellung "warten auf Freizeichen" deaktivieren.
Mein Problem liegt jetzt darin das die Werte zwar in die Registry geschrieben werden
aber nicht Binär sondern Hex.


Delphi-Quellcode:
var regist: TRegistry;
     s: String;

begin
  CreateOddWindow(Handle, false);
  regist:=TRegistry.Create;
  try

    regist.RootKey:=HKEY_LOCAL_MACHINE;
    regist.OpenKey('SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}\0000',false);
    s := '3c,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,d3,03,00,00';
    regist.WriteBinaryData('Default', s[1], length(s));
Danke schon mal in voraus
Gruß exe1972

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Christian Seehase 29. Dez 2004 16:10

Re: Binär Wert in die Registy schreiben
 
Moin Exe1972,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Um binäre Daten zu schreiben, darfst Du den String nicht so aufbauen, wie er z.B. für Reg-Dateien erforderlich ist, sondern jedes Zeichen des Strings ist das jeweilige Byte.

Statt:
Delphi-Quellcode:
s := '3c,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,d3,03,00,00';
muss es also:

Delphi-Quellcode:
s := #$3c#00#00.... usw.
heissen.

exe1972 29. Dez 2004 16:49

Re: Binär Wert in die Registy schreiben
 
Hallo Chris,
Danke für die schnelle Antwort
das ändern der Zeile

Delphi-Quellcode:
s := '#$3c#00#00#00#00#00#00#00#00#00#00#00#01#00#00#00#d3#01#00#00';
brachte leider nicht den gewünschten Erfolg.

Christian Seehase 29. Dez 2004 20:45

Re: Binär Wert in die Registy schreiben
 
Moin Exec1971,

wo habe ich denn Anführungsstriche verwendet? ;-)

Die Verwendung von # gefolgt von einer Zahl ist eine andere Schreibweise für chr(..), und erzeugt einen Character.

#$3F meint das Zeichen mit dem Character Code $3F = 63 Dezimal.
Es könnte also durch chr(63) oder chr($3F) ersetzt werden.

Der String könnte also auch so gebildet werden:

Delphi-Quellcode:
s := chr($3C)+chr(0)+...;
Wichtig:
Deine Ursprungsdaten sind eigentlich hexadezimal dargestellt, nur macht dies bei den meisten Werten nichts aus, ausser beim 3C und D3.
Wenn sich die letzte Stelle im Bereich 0-9 befindet, und die erste 0 ist, kannst Du die dezimale Angabe verwenden, ansonsten muss $xx geschrieben werden (xx = die beiden Ziffern).

exe1972 29. Dez 2004 21:10

Re: Binär Wert in die Registy schreiben
 
die Lösung sieht folgendermaßen aus

Delphi-Quellcode:
 s := #$3c + #$00 + #$00 + #$00 + #$00 + #$00 + #$00 + #$00 + #$00 + #$00 + #$00 + #$00 + #$01 + #$00 + #$00 + #$00 + #$d3 + #$01 + #$00 +#$00;
Danke, Chris ohne Dich hätte ich das wohl nie hinbekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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