Порт (реализация средствами б3д) функции из темы
http://forum.boolean.name/showthread.php?t=9230 (
www.boolean.name > Программирование игр для компьютеров > C++ : Проверка: является ли строка числом?)
Проверка: является ли текст в строке числом.
Function CheckIsNum%(S$)
Local sDIGIT%=1
Local sEXP%=2
Local sSEP%=3
Local sSIGN%=4
Local sETC%=5
Local Key%
Local i%
Local b%
Local Epos%=-1
Local Spos%=-1
Local ExitFlag%=True
Local cLEN%=Len(S)
For i=1 To cLEN
If Not ExitFlag
Exit
EndIf
b=Asc(Mid(S,i,1))
If b>=Asc("0") And b<=Asc("9")
Key=sDIGIT
ElseIf b=Asc("E") Or b=Asc("e")
Key=sEXP
ElseIf b=Asc(".") Or b=Asc(",")
Key=sSEP
ElseIf b=Asc("+") Or b=Asc("-")
Key=sSIGN
Else
Key=sETC
EndIf
Select Key
Case sDIGIT
;
Case sEXP
If Epos<>-1
ExitFlag=False
Else
Epos=i
EndIf
Case sSEP
If Spos<>-1
ExitFlag=False
Else
Spos=i
EndIf
Case sSIGN
If i<>1 And Epos<>i-1
ExitFlag=False
EndIf
Case sETC
ExitFlag=False
End Select
Next
Return ExitFlag
End Function
Q$="ололо"
DebugLog Q+" "+CheckIsNum(Q)
Q$="15445.1"
DebugLog Q+" "+CheckIsNum(Q)
Q$="12БЛДЖАД!"
DebugLog Q+" "+CheckIsNum(Q)
Q$="123.345E-12"
DebugLog Q+" "+CheckIsNum(Q)
Q$="23.2gh465E-1"
DebugLog Q+" "+CheckIsNum(Q)
Q$="23.2465E-1"
DebugLog Q+" "+CheckIsNum(Q)
Q$="sdgf23.2465E-1"
DebugLog Q+" "+CheckIsNum(Q)
Q$="1+1"
DebugLog Q+" "+CheckIsNum(Q)
Q$="+.12E-008"
DebugLog Q+" "+CheckIsNum(Q)
Q$="+.12E-008.1"
DebugLog Q+" "+CheckIsNum(Q)