Message de Fabien date 2008-03-31 16:31 :
Bonjour,
Que pensez-vous du petit programme suivant:
Sub main
dim texte as string
dim SansEspace as string
texte = " 3"
print CBool(Ltrim(texte) = CInt(texte))
SansEspace = Ltrim(texte)
print CBool(SansEspace = CInt(texte))
end sub
Pour le premier "print", j'obtiens "False", pour le deuxième "True".
Etonnant, non?
Oui, le comportement de Basic est un peu étrange.
Mais ce codage est d'abord incorrect. On compare des oranges et des
carottes! Un des termes de la comparaison est du type String, l'autre
est du type Integer.
Un codage correct est:
print CBool(Ltrim(texte) = CStr(CInt(texte)))
On doit toujours se rappeler que Basic fait des conversions implicites
pour faire une réponse "intelligente" (à la place du programmeur). Et
des fois il se trompe.
Pourquoi la deuxième expression donne True ? Je remarque que si
SansEspace est déclaré comme Variant, le résultat est False. Peut-être
que LTrim() renvoie un variant. Un variant n'a pas de type figé, ça
déroute un peu Basic pour évaluer?
______
Bernard
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]