Cosa sto facendo male qui? Voglio semplicemente convertire una stringa formattata in una doppia e usare TFormatSettings passato come parametro a StrToFloat. Ottengo la seguente eccezione:delphi xe5 Errore di StrToFloat che modifica ThousandSeparator in ","
'3,332.1' is not a valid floating point value.
Il separatore delle migliaia e separatore decimale sono i valori attesi ('' e '') in TFormatSettings.
procedure TForm2.Button1Click(Sender: TObject);
var
FS: TFormatSettings;
S: String;
V: double;
begin
FS:= TFormatSettings.Create;
codesite.Send('ThousandSeparator', FS.ThousandSeparator); //correct ','
codesite.Send('DecimalSeparator', FS.DecimalSeparator); //correct '.'
S := '3,332.1';
try
V := StrToFloat(S, FS);
except on E: Exception do
ShowMessage(e.Message);
end;
CodeSite.Send('S', S);
CodeSite.Send('V', V);
end;
grazie! Mi stavo chiedendo se fosse un errore ma avevo difficoltà a credere che sarebbe esistito in una semplice funzione. La mia soluzione è semplicemente rimuovere il separatore delle migliaia e la conversione funziona come previsto. –
Questo è esattamente quello che ho fatto (StringReplace) –
Non è un bug. È di progettazione. La documentazione è abbastanza chiara. –