für das Schreiben und Lesen von Registry-Werten habe ich mir einige Functionen geschrieben, die unter Windows tadellos funktionieren.
Unter Linux(Mint 32 Bit)-Lazarus 2.0.2 gibt es allerdings ein Problem mit ReadFloat, das mit "External: SIGSEGV" endet.
Das Schreiben mit WriteFloat funktioniert. Der Wert der anschließend in der Windows-Registry bzw. der Linux-Datei reg.xml steht ist identisch und lautet 000000000000F03F für die Zahl 1.
Das Lesen von z.B. Integer- oder String-Werten funktioniert auch unter Linux wie erwartet.
Versuche mit geändertem DezimalSeparator führten auch nicht zum gewünschten Ergebnis.
Code: Alles auswählen
function ReadRegFloat(RegPfad: String; Key: String; Default: Double = 0): Double;
var
Regi: TRegistry;
begin
try
Regi := TRegistry.Create;
Regi.RootKey := HKEY_CURRENT_USER;
Regi.OpenKeyReadOnly(UTF8ToWinCP(RegPfad));
if Regi.ValueExists(UTF8ToWinCP(Key)) then
Result := Regi.ReadFloat(UTF8ToWinCP(Key)) //endet unter Linux mit "External: SIGSEGV"
else
Result := Default;
finally
Regi.Free;
end;
end;