Re: Vérifier si un texte repésente une valeur décimale ou he
Publié : mer. 22/févr./2012 10:20
oui, comme ça, ça dépote 

Forums PureBasic - Français
https://www.purebasic.fr/french/
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Commande dé vérification du type de valeur
; Nom du fichier : IsVal - IsReal - IsHexVal.pb
; Version du fichier : 1.0.1
; Programmation : OK
; Programmé par : Guimauve
; Date : 21-02-2012
; Mise à jour : 22-02-2012
; Code PureBasic : 4.61 Beta 1
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Note :
;
; Les commandes suivantes sont inspirés d'un code fournie par
; lepiaf (forum PureBasic Fr)
;
; Optimisation par PAPIPP (forum PureBasic Fr)
;
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Procedure IsVal(string.s)
Static OneShot.b, regExp.i
If OneShot = #False
regExp = CreateRegularExpression(#PB_Any, "^[-+]?[0-9]+?$")
OneShot = #True
EndIf
ProcedureReturn MatchRegularExpression(regExp,string)
EndProcedure
Procedure IsHexVal(string.s)
Static OneShot.b, regExp.i
If OneShot = #False
regExp = CreateRegularExpression(#PB_Any, "^[-+]?\$[0-9A-Fa-f]+$")
OneShot = #True
EndIf
ProcedureReturn MatchRegularExpression(regExp,string)
EndProcedure
Procedure IsReal(string.s)
Static OneShot.b, regExp.i
If OneShot = #False
regExp = CreateRegularExpression(#PB_Any, "^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$")
OneShot = #True
EndIf
ProcedureReturn MatchRegularExpression(regExp,string)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! ATTENTION - CODE D'ESSAI !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Macro AddElementEx(ListName, Value)
AddElement(ListName)
ListName = Value
EndMacro
NewList Values.s()
AddElementEx(Values(), "12")
AddElementEx(Values(), "-1052")
AddElementEx(Values(), "1.25456")
AddElementEx(Values(), "0")
AddElementEx(Values(), "0.0")
AddElementEx(Values(), "000123")
AddElementEx(Values(), "100")
AddElementEx(Values(), "bonjour")
AddElementEx(Values(), StrD(2.0*#PI, 18))
AddElementEx(Values(), "10 bonjour")
AddElementEx(Values(), "1.5e25")
AddElementEx(Values(), "a198")
AddElementEx(Values(), "0011_")
AddElementEx(Values(), "bonjour")
AddElementEx(Values(), "100 bonjour")
AddElementEx(Values(), "541")
AddElementEx(Values(), "$0011_")
AddElementEx(Values(), "$A198")
AddElementEx(Values(), "$Z198")
ForEach Values()
If IsVal(Values()) = 1
Debug "L'entrée " + Chr(34) + Values() + Chr(34) + " est bien une valeur numérique entière"
Found = 1
EndIf
If IsReal(Values()) = 1
Debug "L'entrée " + Chr(34) + Values() + Chr(34) + " est bien une valeur numérique flottante"
Found = 1
EndIf
If IsHexVal(Values()) = 1
Debug "L'entrée " + Chr(34) + Values() + Chr(34) + " est bien une valeur hexadécimale"
Found = 1
EndIf
If Found = 1
Found = 0
Else
Debug "L'entrée " + Chr(34) + Values() + Chr(34) + " n'est pas une valeur valide"
EndIf
Debug ""
Next
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<