Ich benutze folgenden Code, um einen String aus der Registry zu lesen:
Delphi-Quellcode:
function TMpuRegistry.ReadString(const ValueName: string; var Value: string):
LongInt;
var
cbData: Integer;
lpType: DWORD;
Buffer: PChar;
begin
// get size of required data
result := RegQueryValueEx(FhkResult, PChar(ValueName), nil, @lpType, @Value,
@cbData);
if cbData <> 0 then
begin
GetMem(Buffer, cbData);
try
result := RegQueryValueEx(FhkResult, PChar(ValueName), nil, @lpType,
@Buffer, @cbData);
Value := string(Buffer); // <- hier AccessViolation
finally
FreeMem(Buffer);
end;
end;
end;
An der markierten Stelle bekomme ich leider immer eine
AV.
Integer lesen geht problemlos, wenn ich Buffer als Integer deklariere, lesen. Wo steckt da jetzt schon wieder der Teufel?