Vérifier si un texte repésente une valeur décimale ou hexa

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Vérifier si un texte repésente une valeur décimale ou he

Message par Le Soldat Inconnu »

oui, comme ça, ça dépote :)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Vérifier si un texte repésente une valeur décimale ou he

Message par lepiaf31 »

En effet, bien vu ;)
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Vérifier si un texte repésente une valeur décimale ou he

Message par Guimauve »

En effet ça arrache, maintenant j'ai :
  • Solution 1 : 617
  • Solution 2 : 121
  • Ratio = 1 / 5.0991735458
Intense !

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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
A+
Guimauve
Répondre