Thema: Delphi Wert von RegSetValueEx

Einzelnen Beitrag anzeigen

me2u
(Gast)

n/a Beiträge
 
#3

Re: Wert von RegSetValueEx

  Alt 4. Apr 2007, 14:05
oh... das is ja super wie schnell man hier eine Antwort bekommt

leider hilft das auch nichts... das Resultat besteht wieder nur aus dem ersten Zeichen. Ich vermute, dass es an dem Datentyp PBYTE (von "lpData") liegt.
Beispiel: Registryeintrag = "Lucida Console" (vom Typ REG_SZ), cbData = 30... mein String enthält nur "L"

Irgendwie muss man noch den Wert von "cbData" mit einbauen. Ich vermute dass cbData immer der (Länge des Eintrags + 1 Zeichen) * 2 entspricht. Das zusätzliche Zeichen wird Null sein, um den String abzuschliessen. Beim Registry-Datentyp REG_DWORD ist "cbData" übrigens immer 4.

Für Typ REG_SZ: Ist es nicht irgendwie möglich den Zeiger "lpData" immer ein Byte weiter zu setzen und dann das Zeichen im Speicher abzufragen? Wenn ja, dann hätte ich aber keine Ahnung wie es syntaktisch richtig aufgeschrieben würde.

kleiner Nachtrag:
So was in der Art, würde helfen (hatte ich mal versucht... verdeutlicht glaub ich eine Idee):

Delphi-Quellcode:
var s: string;
    i: DWORD
...
REG_DWORD: begin
             GetMem(@i, cbData) // konnte man so nicht schreiben
             @i := lpData; // der linken Seite kann nix zugewiesen werden
             Result := IntToStr(i);
           end;
REG_SZ: begin // Kommentare... siehe oben
          GetMem(@s, cbData);
          @s := lpData;
          Result := s;
        end;
...
Viele Grüsse
Markus
  Mit Zitat antworten Zitat