Page 1 sur 2
verifier le type d'une chaine de caractere
Publié : sam. 06/nov./2004 18:29
par Patrick88
certainement moins complet que la lib typeof() posté par ????
Code : Tout sélectionner
Enumeration
#EST_UN_NOMBRE
#EST_UNE_CHAINE
EndEnumeration
Procedure.b isnumber(chaine.s)
If Val(chaine)=0
If Left(chaine,1)="0"
result=#EST_UN_NOMBRE
Else
result=#EST_UNE_CHAINE
EndIf
Else
result=#EST_UN_NOMBRE
EndIf
ProcedureReturn result
EndProcedure
Debug "VALEUR "+Str(#EST_UN_NOMBRE)+" POUR UN NOMBRE"
Debug "VALEUR "+Str(#EST_UNE_CHAINE)+" POUR UNE CHAINE DE CARACTERE"
Debug isnumber("123")
Debug isnumber("-123")
Debug isnumber("abc")
pat
Publié : sam. 06/nov./2004 23:23
par Le Soldat Inconnu
il y a plus simple
Code : Tout sélectionner
Procedure IsVal(Chaine.s)
; Retourne différent de 0 si la chaine est un nombre
ProcedureReturn Val(Chaine + "1")
EndProcedure
Debug IsVal("12")
Debug IsVal("-1052")
Debug IsVal("0")
Debug IsVal("bonjour")
en fait j'ajoute "1" à la fin de la chaine, ainsi, je suis sur de ne pas tomber sur la valeur 0 qui est litigieuse car
Val("0") = 0
et
Val("abc") = 0
donc on ajoutant 1, quand le résultat est nul, j'ai obligatoirement une chaine
Val("0" + "1") = Val("01") = 1
et
Val("abc" + "1") = Val("abc1") = 0
Par contre
Val("10abc") renvoie 10 mais dans ce genre de cas, pour être sur, il faut tester chaque caratère.
Publié : sam. 06/nov./2004 23:35
par Heis Spiter
C'était ma lib à moi (qui n'a pas carburé !).
Publié : dim. 07/nov./2004 7:25
par Anonyme2
Heis Spiter a écrit :C'était ma lib à moi (qui n'a pas carburé !).
Ca serait bien de regrouper aussi les lib fr sur le même site que les codes et tutos

Publié : dim. 07/nov./2004 7:53
par Chris
Je n'arrive pas à voir l'utilité de ce bout de code
Si c'est une chaine, c'est une chaine, quoi qu'elle puisse contenir!
Non...?
Publié : dim. 07/nov./2004 8:29
par comtois
Pour tester si c'est une chaine de type "10abc"
Code : Tout sélectionner
Procedure IsVal(Chaine.s)
;Retourne 1 si c'est un nombre ENTIER
a=Val(Chaine)
b.s=Str(a)
If Chaine=b
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Debug IsVal("12")
Debug IsVal("-1052")
Debug IsVal("0")
Debug IsVal("bonjour")
Debug IsVal("10abc")
Et ça peut servir pour un input() du genre :
Code : Tout sélectionner
printN("Indiquez votre âge :")
Age$=input()
If IsVal(Age$)
PrintN("Ok")
Else
PrintN("Ce n'est pas un nombre")
Endif
Publié : dim. 07/nov./2004 8:50
par Anonyme2
J'ai utilisé ce code dans mon PureLoto contrôleur pour tester que la chaine est strictement composée de chiffres
Code : Tout sélectionner
; on vérifie chaque caractère pour déterminer si c'est un chiffre
For i = 0 To (Len(A$) - 1)
Valeur = PeekB(@A$ + i)
If Valeur < 48 Or Valeur > 57 ; c'est une erreur
Erreur + 1
EndIf
Next i
Publié : dim. 07/nov./2004 8:55
par Chris
D'accord!
Effectivement, ça peut servir.
Publié : dim. 07/nov./2004 8:58
par Chris
Tiens, y a Denis sur TF1
Publié : dim. 07/nov./2004 9:45
par Heis Spiter
???
Publié : dim. 07/nov./2004 10:00
par Anonyme2
???
Publié : dim. 07/nov./2004 10:02
par Chris
???
Publié : dim. 07/nov./2004 10:05
par Anonyme2
C'est pour toi Chris,
c'est quoi ce TF1 ?
Publié : dim. 07/nov./2004 10:07
par Chris
La télé!
J'ai vu ton avatar dans un dessin animé. (Je zappais, je précise, sinon, on va croire que je regarde les dessins animés)

Publié : dim. 07/nov./2004 10:22
par Crystal Noir
En fait il zappait des infos sur les dessins animés pour préciser un peu plus
