IsNumeric
Verfasst: 15.11.2014 09:30
Mit dieser Routinen lassen sich Zahlen prüfen, welche als String übergeben werden:
Code: Alles auswählen
EnableExplicit
Structure CharacterArray
StructureUnion
c.a[0]
EndStructureUnion
EndStructure
Procedure.w IsNumeric(St.s)
Protected *String.CharacterArray=@St
Protected Cnt.l,Length.l=MemoryStringLength(*String,#PB_Ascii)
Protected Pt.w,e.w
Select *String\c[0]
Case Asc("+"),Asc("-") :Cnt=1:
Case Asc(".") :Cnt=1:Pt=#True
EndSelect:If Length=Cnt:ProcedureReturn #False:EndIf
Repeat
Select *String\c[Cnt]
Case Asc("0") To Asc("9") :Cnt+1:Continue
Case Asc(".") :If Pt:ProcedureReturn #False:Else:Pt=#True:Cnt+1:Continue:EndIf
Case Asc("e"),Asc("E")
If e
ProcedureReturn #False
Else
Cnt+1:Select *String\c[Cnt]
Case Asc("+"),Asc("-"),Asc("0") To Asc("9"):e=#True:Cnt+1
Default:ProcedureReturn #False
EndSelect
EndIf
Default:ProcedureReturn #False
EndSelect
Until Length=Cnt:ProcedureReturn #True
EndProcedure
Debug "Zahlen"
Debug IsNumeric("123")
Debug IsNumeric("17.3")
Debug IsNumeric("-14.8")
Debug IsNumeric(".67")
Debug IsNumeric("45e11")
Debug IsNumeric("1.7e-6")
Debug IsNumeric("-65e-4")
Debug ""
Debug "Keine Zahlen"
Debug IsNumeric("45Alpha")
Debug IsNumeric("1...2...3...Meins")
Debug IsNumeric("PureBasic")