Page 2 sur 2

Re: Petit mais costaud !

Publié : mer. 09/oct./2013 23:43
par PAPIPP
Bonjour à tous

Un peu plus court et surtout valable pour presque toute valeur numérique sous forme de chaine.

Sauf pour une valeur numérique >0 en tête de chaine, mais peut être amélioré.

Code : Tout sélectionner

Procedure Isnumeric(STRNG.s)
  STRNG=ReplaceString(STRNG, " ", "" )+"1" ; peut être supprimé si l'on considére qu'une chaine avec 1 ou plusieurs Blancs n'est pas numérique
  ;   STRNG+"1" ; peut remplacer l'instruction précedente
  If ValD(STRNG)<>0 Or Val(STRNG)<>0
    ProcedureReturn #True
  Else 
    ProcedureReturn #False
  EndIf   
EndProcedure 


Dim tab.s{15}(20)
tab(I)="458"
i+1:tab(I)="-458"
i+1:tab(I)="+ 45. 8  "
i+1:tab(I)="$BCE"
i+1:tab(I)="45.8"
i+1:tab(I)="%101010"
i+1:tab(I)="5.667e-2"
i+1:tab(I)="-5.667e-2"
i+1:tab(I)="azafdf"
i+1:tab(I)="a654"
i+1:tab(I)="0.00"
i+1:tab(I)="%0 0 0 0 0 0"
i+1:tab(I)="AB0 045ABCD 0 0 0 0"
i+1:tab(I)="0045ABCD 0 0 0 0"  ;  C'est un cas ou l'algo trouve une valeur numérique 
i+1:tab(I)="00 0ABCD 0 0 0 0"  


Jmax=i

For i=0 To jmax
  VALN=isnumeric(tab(i))
  Debug  "num="+Str(valn)+" i="+Str(i)+" tab(i)="+tab(i)
Next

A+

Re: Petit mais costaud !

Publié : mer. 09/oct./2013 23:57
par falsam
Merci PAPIPP. J'avais juste besoin de tester des valeurs entières pour mon utilitaire Code Form Helper, mais je garde ce code dans mes archives :)