[Lazarus] How to check if a string is a valid floating-point number.
Santiago A.
svaa at ciberpiula.net
Fri Nov 25 11:38:15 CET 2011
El 25/11/2011 10:16, Kjow escribió:
What about the standard pascal function "val"
function IsStrFloatNum(s: string): Boolean;
var
dummyNumber:double;
posError:integer;
begin
val(s, dummyNumber, posError);
result:=(posError=0);
end;
Time ago I came across a program written by someone that had to import
data from an ascii file, and epending upon the contents of the line,
select the kind of record to import. The initial programmer used
exceptions. "I try this record, if it raises an exception then I try the
other". I Changed it to a simple initial check of contents. The initial
version took about 30 seconds, my version 3 seconds.
Lesson: Exceptions should be use to catch errors, not to common tests.
> Hi all,
>
> I need to know if a string is a valid floating-point number, so I
> tried this function:
>
> function IsStrFloatNum(s: string): Boolean;
> begin
> try
> // try to convert the string into a floatnumber
> StrToFloat(s);
> // if there is no error the result is true
> Result := True;
> except
> // if there is any error the result is false
> Result := False;
> end;
> end;
>
> (From: http://www.swissdelphicenter.ch/torry/showcode.php?id=304 )
>
> Well, I get this error:
>
> Debugger Exception Notification
> project.exe raised exception class 'EConvertError' with message:
> "Cross" is an invalid float
>
> I used this function some month ago in this project and it worked
> without problems, but now (some month after) I re-tried to re-build
> and re-use this function and I get this error.
>
> Did I inadvertently change something?
>
>
> Thank you!
> Kjow
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
--
Regards
santiago A.
svaa at ciberpiula.net
More information about the Lazarus
mailing list