Hi Lucius,
da deine Daten aus einem
XML-File stammen und du sie intern in einer StringList speicherst, kommst du um das eventuell mehrfache Konvertieren der Strings nicht herum. Probier die Konvertierung mal mit der folgenden Funktion anstelle von StrToFloat():
Delphi-Quellcode:
type
TDemoForm = class(TForm)
...
private
fs: TFormatSettings;
end;
function StrToBytes(s: string; fs: TFormatSettings; decimal: boolean = true): double;
var
sValue: string;
factor: integer;
begin
if decimal
then factor := 1000
else factor := 1024;
sValue := ParseStr(s, ' ');
Result := StrToFloat(sValue, fs);
case s[1] of
'G': Result := Result * factor * factor;
'K': Result := Result * factor;
end;
end;
procedure TDemoForm.Create(Sender: TObject);
begin
// initialize format settings
GetLocaleFormatSettings(GetUserDefaultLCID, fs);
// in case of differing decimal point settings
fs.DecimalSeparator := '.';
fs.ThousandSeparator := ',';
end;
procedure TDemoForm.ButtonClick(Sender: TObject);
begin
try
d := StrToBytes('312.45 MB', fs);
ShowMessage(FloatToStr(d));
except
ShowMessage('damned');
end;
end;
Grüße vom marabu