Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: ReadBinaryData() - Problem

  Alt 9. Feb 2005, 10:10
Zitat von peicher:
Leider wird keine der beiden Exceptions ausgelöst, d.h. der Typ muss Binary sein und die Info-Struktur ist auch nicht zu klein...
Wenn ich im Regedit nachschaue, dann steht da schon "REG_BINARY" als Datentyp.
Sonst noch irgendwelche Ideen, bzw. Einfälle?
Seltsam, dass dein TRegistry Objekt den Namen "Registry" trägt; dies müsste eigenlich zu einem
Namenskonflikt mit der Unit registry.pas führen.

Kopiere doch mal die Unit registry.pas in das Verzeichnis mit deinem Sourcecode und füge die Unit
zum Projekt hinzu.
Danach kannst du einen Breakpoint setzen und in die Funktion ReadBinaryData hineindebuggen.
Delphi-Quellcode:
resourcestring
  SInvalidRegType = 'Ungültiger Datentyp für ''%s''';
procedure ReadError(const Name: string);
begin
  raise ERegistryException.CreateResFmt(@SInvalidRegType, [Name]);
end;

function TRegistry.ReadBinaryData(const Name: string; var Buffer; BufSize: Integer): Integer;
var
  RegData: TRegDataType;
  Info: TRegDataInfo;
begin
  if GetDataInfo(Name, Info) then
  begin
    Result := Info.DataSize;
    RegData := Info.RegData;
    if ((RegData = rdBinary) or (RegData = rdUnknown)) and (Result <= BufSize) then
      GetData(Name, @Buffer, Result, RegData)
    else ReadError(Name); // <=== hier wird dein Code wohl drauflaufen
  end else
    Result := 0;
end;
Also ich vermute jetzt: die Daten in dem Registry-Key sind länger als 128 Bytes.
Dann wird die irreführende Meldung 'Ungültiger Datentyp für ''%s''' erzeugt.
Andreas
  Mit Zitat antworten Zitat