Thema: Delphi Registry: Typ ermitteln

Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#11

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 17:21
wäre dieser code hier denn in ordnung?

Delphi-Quellcode:
function ReadRegFromAPI(const Key: HKEY; Path, lpValueName: string): string;
var
  KeyH : HKEY;
  lpType,
  lpcbData,
  lpData : DWORD;
  bRes : boolean;
begin
  Result := '';
  if RegOpenKeyEx(Key, PAnsiChar(Path), 0, KEY_READ, KeyH) = ERROR_SUCCESS then
  try
    lpType := REG_NONE;
    lpcbData := 0;
    bRes := false;
    if RegQueryValueEx(KeyH, PAnsiChar(lpValueName), nil, @lpType, nil, @lpcbData) = ERROR_SUCCESS then
    case lpType of
      REG_SZ, REG_EXPAND_SZ:
        begin
          SetLength(Result, lpcbData + 1);
          bRes := RegQueryValueEx(KeyH, PAnsiChar(lpValueName), nil, @lpType, @Result[1], @lpcbData) = ERROR_SUCCESS;
        end;
      REG_DWORD:
        begin
          bRes := RegQueryValueEx(KeyH, PAnsiChar(lpValueName), nil, @lpType, @lpData, @lpcbData) = ERROR_SUCCESS;
          Result := string(lpData);
        end;
    end;
  finally
    if not bRes then
      MessageBox(0, 'Fehler aufgetreten', '!', 0);
    RegCloseKey(Key);
  end;
end;

und wieso muss ich bei einem string auf das erste byte zeigen? also [1] ? bei einem integer sind es doch auch 4 bytes, wieso muss ich da nicht [1] angeben?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat