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.