Zitat von
Astat:
Wäre natürlich nett, wenn Du uns danach die Änderungen zukommen lassen würdest.
Ich hatte angefangen, mich damit zu beschäftigen, habe es jedoch aufgrund der Seite
http://qc.embarcadero.com/wc/qcmain.aspx?d=23428 sein gelassen, da die mitgelieferte registry.pas in Delphi2009 viele Schlüsseltypen nicht kennt. Ich habe zwar die Erweiterung aus dem Jahr 2006 durchgeführt, bekomme es aber nicht kompiliert.
Ich habe dann doch noch einen anderen Registryexport ausfindig machen können, die beim Auslesen der Datentypen einen anderen Weg geht, nämlich über die windows.pas
Code unter:
http://www.experts-exchange.com/Prog..._24754350.html
Ich habe hauptsächlich in der Funktion ExportProc() Änderungen vorgenommen. (siehe Anhang)
Was mich ein wenig stört, ist dieser Part:
Delphi-Quellcode:
REG_BINARY :
begin
st_datatype := 'hex:';
st := st_valuename + st_datatype;
dataLen := Round(dataLen / 2);
for j := 0 to dataLen - 1 do
begin
st_part := LowerCase(WideCharToHexStr(PChar (data) [j]));
if j < dataLen - 1 then
st_part := st_part + ',';
st := CheckLineLength(st, st_part);
If (st[length(st)] = '\') then Delete(st, length(st), 1);
end;
end;
Ich muss unter Delphi 2009 wegen der Behandlung von Strings als
Unicode, die Datenlänge halbieren und mit der Funktion WideCharToHexStr() die
Unicode-Daten entsprechend in HEX umwandeln.
Delphi-Quellcode:
// Unicode in Hex-Format wandeln für Reg_binary
function WideCharToHexStr(Value: Char):
string;
var
Ch : Char;
code :
String;
begin
code := IntToHex(Ord(Value), 4);
if Ch = #0
then code := IntToHex(Ord(Value), 4);
// swapBytes
Result := code[3]+code[4]+'
,'+code[1]+code[2];
end;
Geht das nicht einfacher und kann ich das Halbieren der Datenlänge für die for-Schleife ändern? Es ist ja fehleranfällig, da es auch ungerade Datenlängen gibt, ich dann aber so immer noch ein Byte 00 zusätzlich erhalte...