Einzelnen Beitrag anzeigen

amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Registrykomponente gesucht

  Alt 13. Jan 2010, 10:50
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...
Angehängte Dateien
Dateityp: pas unitexregistry_174.pas (26,6 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat