Nochmal Halloele!
Also mit der Hilfe habe ich mich rumgeschlagen, und auch
diesen Befehl gefunden,
Na, wie hätte ich das wissen können?
Also… Dreh- und Angelpunkt ist die Deklaration
function ReadBinaryData(const Name: String; var Buffer;
BufSize: Integer): Integer;
„Name“ hast Du ja schon abgehakt. BufSize ist ein banaler Integerwert; damit solltest Du auch keine Verständnisschwierigkeiten haben. Damit fehlt nur noch „Buffer“. „Buffer“ ist ein untypisierter Parameter, kann also „Alles“ sein (solange es „groß genug“ ist). Da es hier um Byte-Werte geht, bietet sich an, Buffer wie folgt zu deklarieren:
VAR Buffer: ARRAY[0..255] OF BYTE
256 Bytewerte sollten ausreichend sein; wenn Du Bedenken hast, daß irgendjemandes Bildschirmschonerpaßwort länger sein könnte, kannst Du hier natürlich auch einen höheren Wert einsetzen.
Damit steht BufSize auch fest: BufSize ist hier gleich 256.
Ach ja, um den Rückgabewert von ReadBinaryData muß man sich natürlich auch noch Gedanken machen. Ist hier vom Typ Integer, also ist es sinnvoll, sich noch einen Integer zu definieren
VAR n: INTEGER;
der das Ergebnis „aufnehmen“ kann.
Langer Rede kurzer Sinn:
n := regist.ReadBinaryData('ScreenSave\_Data',Buffer,256);
Nach Ausführung dieser Zeile stehen die Bytes des Registry-Schlüssels in „Buffer“, und die Länge der Bufferbelegung steht in n.
Den Bufferinhalt in einen String zu konvertieren ist nur noch Kinderkram:
s := '';
FOR i := 0 TO n-1 DO
begin
s := s+' '+ByteToString(Buffer[i])
end;
Die Funktion „ByteToString“ macht aus nem Byte-Wert einen String in Hex-Notation (z. B. ‚$4B‘ oder ‚$E2‘ oder ‚$FF‘):
FUNCTION ByteToString (b: BYTE): STRING;
CONST
NIBBLECHAR:
ARRAY[$0..$F] OF CHAR
= ('0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F');
VAR s: STRING;
begin
SetLength(s,2);
s[1] := NIBBLECHAR[b DIV 16];
s[2] := NIBBLECHAR[b MOD 16];
Result := '$'+s
end;
Statt „ByteToString“ kannst Du selbstverständlich auch „IntToStr“ nehmen; die Werte werden Dir dann dezimal angezeigt (die im RegEdit-Browser angezeigten Werte sind Hexadezimalwerte)
Nun noch den String s ins Editfeld Deiner Wahl kopieren und fertig ist die Chose:
Edit1.Text := s
Wenn’s irgendwo haken sollte, einfach nochmal hier posten.
Mit freundlichem Gruß
Martin