PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → NumériqueVersChaîne et Windows 11
NumériqueVersChaîne et Windows 11
Débuté par m.valette, 07 jan. 2022 15:41 - 2 réponses
Posté le 07 janvier 2022 - 15:41
Bonjour à tous,
j'ai mes applications qui partent toute en vrille sur Windows 11.
Après recherche, cela viendrait de la fonction NumériqueVersChaîne avec comme séparateur de miller un "espace"
-> Sous Windows 10, on trouve bien un espace
-> Sous Windows 11, il s'agit d'un espace insécable à la place.

Le problème vient pour récupérer la valeur numérique de cette chaine avec la fonction val :
Exemple :
- 10 520
avec un val et un remplace de "espace" par rien, j'obtient bien 10520 sous windows 10 mais 10 sous windows 11

Ma_Valeur_1 est un réel = 10520
Ma_CHaine_1 est une chaîne = SansEspace(NumériqueVersChaîne(Ma_Valeur_1, "9,0fS")) // Conversion en chaine avec séparateur de millier (Espace)
Ma_CHaine_2 est un réel = Val(Remplace(Ma_CHaine_1," ","")) // Transformation de la chaine en valeur numérique en remplaçant espace par rien

Trace("---------------")
Trace(Ma_CHaine_1+RC+Ma_CHaine_2)


Ma_CHaine_2 = Val(Remplace(Remplace(Ma_CHaine_1," ",""),ESP,"")) // Transformation de la chaine en valeur numérique en remplacant un espace insecable par rien
Trace("---------------")
Trace(Ma_CHaine_1+RC+Ma_CHaine_2)


Dans tout mes applications, je faisait juste : Val(Remplace(Ma_CHaine_1," ","")) mais là j'ai bien peur de tout revoir pour faire Remplace(Remplace(Ma_CHaine_1," ",""),ESP,"") car si fais que Remplace(Ma_CHaine_1,esp,"") sous windows 10 cela ne va pas fonctionner...

J'ai fouillé dans les paramètres régionaux sous windows 11, mais je vois rien.
Si quelqu'un a une piste pour éviter de tout revoir le code...

A+








Membre enregistré
351 messages
Posté le 07 janvier 2022 - 16:51
Bonjour Micky,

Ton code retourne bien la même chose sous Windows 11 (tester avec la version 25 et 27).
---------------
10 520 10520
---------------
10 520 10520

Ton problème vient des paramètres régionaux de ton Windows, vérifie bien que c'est un espace comme séparateur de millier et non un espace insécable ... ton diagnostic est de toute façon bon.

Je cite l'aide en ligne (https://doc.pcsoft.fr/fr-FR/?3024024) :
Les chiffres de la partie entière du nombre seront regroupés par 3 et séparés par le caractère séparateur de milliers défini dans Windows.

Regarde si tu ne fais pas un : ChangeSéparateur(sepMILLIER,ESP) par hasard dans ton code ... ou redéfinit le avec un espace à ce moment là, c'est peut-être une autre application qui te fait le coup !

--
Bon développement, Patrick [3po.fr]
Membre enregistré
101 messages
Posté le 09 janvier 2022 - 23:43
Bonjour,

Espace : caract(32)
Espace insécable : caract(160)
ChaîneRemplacée = Remplace(ChaîneInitiale, [caract(32), Caract(160)], "")