ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Standard functions / String functions
  • Plage de conversion
  • Fonction Val et UNICODE
  • Divers
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Renvoie la valeur numérique d'une chaîne de caractères. Il est ainsi possible d'effectuer des calculs numériques sur des chaînes de caractères.
Remarque : Cette fonction est identique à la fonction ChaîneVersNumérique.
Exemple
Val("143")    // Renvoie 143
Val("1.67")   // Renvoie 1.67
Val("ABC")    // Renvoie 0
Val("3plus2") // Renvoie 3
Val("7,5")    // Renvoie 7
Val("1D2")    // Renvoie 100
Val("2.5e-2") // Renvoie 0.025
Syntaxe
<Résultat> = Val(<Chaîne initiale> [, <Base utilisée>])
<Résultat> : Réel ou entier
  • Valeur numérique de la chaîne.
  • "inf" (pour "infini"), si le résultat dépasse les capacités d'un réel. Il est conseillé d'utiliser la conversion vers une variable de type Entier.
  • 0 en cas d'erreur.
AndroidWidget AndroidJava Dans cette version, <Résultat> correspond à un réel.
<Chaîne initiale> : Chaîne de caractères ou Buffer
Chaîne de caractères à convertir en valeur numérique.
Pour un réel, le séparateur doit être le point '.' et les préfixes de notation scientifique peuvent être 'E', 'e', 'D' ou 'd'. Si le séparateur est une virgule, les chiffres présents après la virgule ne seront pas pris en compte.
Ce paramètre peut également être un buffer. Dans ce cas, le traitement du buffer varie en fonction de l'option sélectionnée dans l'onglet "Unicode" de la description de la configuration :
  • si l'option "Utiliser des chaines ANSI en exécution" est sélectionnée, le buffer sera traité comme une chaîne ANSI.
  • si l'option "Utiliser des chaînes UNICODE en exécution" est sélectionnée, le buffer sera traité comme une chaîne ANSI ou UNICODE selon son contenu.
<Base utilisée> : Chaîne de caractères ou entier (optionnel)
Base dans laquelle est représenté le chiffre. Les valeurs possibles sont les suivantes :
  • "d" : base 10 (décimal),
  • "x" : base 16 (hexadécimal),
  • "o" : base 8 (octal),
  • un entier compris entre 2 et 36.
Par défaut, la base 10 est utilisée.
WEBDEV - Code NavigateurUniversal Windows 10 App Ce paramètre n'est pas disponible. La base 10 est automatiquement utilisée.
Remarques

Plage de conversion

La conversion d'une chaîne en entier avec la fonction Val est réalisée si la valeur est comprise entre -9.223.372.036.854.775.808 et 9.223.372.036.854.775.807.

Fonction Val et UNICODE

Le paramètre <Chaîne initiale> peut être au format ANSI ou au format UNICODE.
Pour plus de détails sur l'UNICODE, consultez Gestion de l'UNICODE.

Divers

Dès qu'un caractère de <Chaîne initiale> ne peut pas constituer un nombre, la fonction Val arrête d'interpréter <Chaîne initiale> et retourne le nombre correspondant aux caractères déjà lus.
Les réels ne sont convertibles qu'à partir de la base 10. Dans les autres bases, les caractères situés après le "." (point) ne seront pas pris en compte.
Liste des exemples associés :
La fonction Val Exemples unitaires (WINDEV) : La fonction Val
[ + ] Utilisation de la fonction WLangage "Val" avec des bases différentes.
Par exemple, elle vous permet de récupérer la valeur décimale d'une chaîne au format Hexadécimal.
Classification Métier / UI : Code neutre
Composante : wd290vm.dll
Minimum version required
  • Version 9
Comments
Exemplo so_numeros
PROCEDURE so_numeros(recebe)

wvarfim is string
sMyString is string = "0123456789"
Ss is string
vpos is int

For vpos = 1 TO length(recebe)
Ss = middle(recebe, vpos, 1)
If contains(sMyString, Ss)
wvarfim = wvarfim+middle(recebe,vpos,1)
end
end

result wvarfim
Boller
07 May 2024
Exemplo NewVal
Procedure NewVal(texto)

IF texto = "" THEN

RESULT ""

ELSE

p is int

achou is string

nTotal is int = Length(texto)

LOOP(nTotal)

p++

IF IsNumeric(texto[[p]]) = True THEN

achou += texto[[p]]

Else if texto[[p]] = “,” or texto[[p]] = “.”

achou += texto[[p]]

END

END

achou = NoSpace(achou)


RESULT achou

END
Boller
07 May 2024
0 ou erreur ?
Et si la chaîne initiale est "0", comment faire la différence avec une erreur ?
J'insiste ...
Pucpood
13 Sep. 2023

Last update: 06/15/2023

Send a report | Local help