Dragan,
>>>IsDigit() checks only first symbol, so it's not suitable for my situation. Type() works fine.
>>>
>>>Example:
>>>
>>>myNumber='12345'
>>>type(myNumber)='N'
>>>isDigit(myNumber)=.t.
>>>
>>>myNumber='1hffhhf'
>>>type(myNumber)='U'
>>>isdigit(myNumber)=.t.
>>
>>This behavior is not in accordance with the docs. Whether or not it's a bug, I don't know. The TYPE() function, according to the documentation, should receive a character expression, not a variable. If this behavior is a bug, in may be corrected in a future service pack or release. If this does happen, it may cause problems for you in the future.
>
>It
will accept a variable whose value is of the type character, and then judge its contents. That's why the first example returned N (variable myNumber was a string containing numeric expression) and the other U (it contained an undecidable expression).
>
>>While ISDIGIT() does only check the first character in a multi character string, there's nothing to keep you from looping through and using it to check each character via SUBSTR() like this:
>>llisnumber = .T.
>>lni = 1
>>DO WHILE llisnumber AND (lni <= LEN(mystring))
>> llisnumber = ISDIGIT(SUBSTR(mystring, lni, 1))
>> lni = lni + 1
>>ENDDO
>>RETURN llisnumber
>
>Or, better, you can use StrFilter() from, ahem, Foxtools :)
>
>lcJustDigits=strfilter(myNumber, '0123456789.+-')
>if lcJustDigits=myNumber
> * it's really a number
>else ... well, maybe not.
I haven't seen your post, because you didn't put it in my folder :). Anyway, if it requires to set library to foxtools, I would better use George's function (my idea was similar, but since George developed it, I called it George's).
If it's not broken, fix it until it is.
My Blog