Petit mais costaud !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Petit mais costaud !

Message 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+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
falsam
Messages : 7320
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit mais costaud !

Message 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 :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre