FloCurrStrToFloat
Similar to StrToFloat, the FloCurrStrToFloat function converts a String containing both numeric and currency characters into a Float data type, by removing the non-numeric characters.
FloCurrStrToFloat will fail if the Windows decimal symbol is not a decimal full-stop (.).
If the remaining characters do not represent a valid numeric currency value, an error will occur. If this occurs, you could use a Try...Except block to handle the error and provide a default value.
Declaration: Function FloCurrStrToFloat( const S : string) : Extended
An example to try follows.
procedure
ScriptEvent(
var
Value:Variant);
var
s2, s3 :
String
;
begin
s2 :=
'$1,234.567'
;
//Value will be equal to 1234.567
Value := FloCurrStrToFloat(s2);
LogInfo(
'FloCurrStrToFloat('
+ s2 +
')->'
+ FloatToStr(FloCurrStrToFloat(s2)));
LogInfo(
''
);
s2 :=
'$1.234,567'
;
//Value will be equal to 1.234567 - the "." is taken as the decimal symbol
//"+", "-", and digits are left intact, and all other characters are removed
Value := FloCurrStrToFloat(s2);
LogInfo(
'FloCurrStrToFloat('
+ s2 +
')->'
+ FloatToStr(FloCurrStrToFloat(s2)));
LogInfo(
''
);
s3 :=
'USD 1 , 2 3 4 . 5 6 '
;
LogInfo(
'FloCurrStrToFloat('
+ s3 +
')->'
+ FloatToStr(FloCurrStrToFloat(s3)));
s3 :=
'+ 1 , 2 3 4 . 5 6 '
;
LogInfo(
'FloCurrStrToFloat('
+ s3 +
')->'
+ FloatToStr(FloCurrStrToFloat(s3)));
s3 :=
'- 1 , 2 3 4 . 5 6 '
;
LogInfo(
'FloCurrStrToFloat('
+ s3 +
')->'
+ FloatToStr(FloCurrStrToFloat(s3)));
s3 :=
'1 , 2 3 4 . 5 6-'
;
// fails
try
strResult := FloatToStr(FloCurrStrToFloat(s3));
except
strResult :=
'Exception: '
+ ExceptionToString(ExceptionType, ExceptionParam);
end
;
LogInfo(
'FloCurrStrToFloat('
+ s3 +
')->'
+ strResult);
LogInfo(
''
);
end
;