여기서 내가 뭘 잘못하고 있니? 단순히 형식이 지정된 문자열을 double로 변환하고 StrToFloat에 매개 변수로 전달 된 TFormatSettings를 사용하기 만하면됩니다. 나는 다음과 같은 예외가 :delphi xe5 StrToFloat 실패, 천사 분리자가 ','로 변경됨
'3,332.1' is not a valid floating point value.
1000 개 단위 구분 및 소수점 구분이 예상되는 값이다 (','및 '.') TFormatSettings한다. (하지 버그가 적어도 매우 일치하지 않는 행동 경우) TextToFloat의 내부 함수 (ThousandSeparator을 무시하는 것 같다)
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;
감사합니다. 나는 그것이 버그인지 궁금해했지만 단순한 기능으로 존재할 것이라고 믿기가 어려웠습니다. 내 해결 방법은 단지 천 단위 구분 기호를 제거하고 변환이 예상대로 작동합니다. –
그건 정확히 내가 한 일이야 (StringReplace) –
그건 버그가 아니야. 의도적으로 설계된 것입니다. 문서는 아주 분명합니다. –