Deutsch   English   Français   Italiano  
<ttv9nv$fu$2@shakotay.alphanet.ch>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!news.imp.ch!news.alphanet.ch!alphanet.ch!.POSTED!not-for-mail
From: Joseph B <josephb@nowhere.invalid>
Newsgroups: fr.comp.sys.mac.programmation
Subject: Re: Verifier la presence d'un mot dans tous les champs
Date: Sat, 4 Mar 2023 11:23:43 -0000 (UTC)
Organization: =?UTF-8?B?Qm9m4oCm?=
Message-ID: <ttv9nv$fu$2@shakotay.alphanet.ch>
References: <t0lcik$1616$1@cabale.usenet-fr.net>
 <dg1u2h9ms324so97iqqac5jfclhunbt5u0@4ax.com> <t0n2vh$23a2$1@cabale.usenet-fr.net>
 <t8162d$1rbm$1@gioia.aioe.org> <t81ks1$2ipl$1@cabale.usenet-fr.net>
 <ttkveo$7no$1@shakotay.alphanet.ch> <ttl07l$u8m$1@cabale.usenet-fr.net>
 <ttl3bh$svv$1@shakotay.alphanet.ch> <ttm19j$1bll$1@cabale.usenet-fr.net>
 <ttm1u5$1br0$1@cabale.usenet-fr.net> <ttm4os$inu$1@shakotay.alphanet.ch>
 <1q6wq7l.wkh7dy1ty8eazN%andre_favre@af.invalid>
 <ttn9em$h0s$1@shakotay.alphanet.ch> <ttpqam$7tm$1@shakotay.alphanet.ch>
 <ttt1b6$lk6v$1@dont-email.me> <tttjb9$1ais$1@cabale.usenet-fr.net>
 <tttjmb$5hk$1@shakotay.alphanet.ch> <tttl0q$1asu$1@cabale.usenet-fr.net>
 <tttltt$elj$1@shakotay.alphanet.ch> <tttmh9$1caj$1@cabale.usenet-fr.net>
 <ttto6k$p6b$1@shakotay.alphanet.ch> <tttu3m$1dv4$1@cabale.usenet-fr.net>
 <ttv1vi$ugge$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 4 Mar 2023 11:23:43 -0000 (UTC)
Injection-Info: shakotay.alphanet.ch; posting-account="joseph25b";
	logging-data="510"; mail-complaints-to="usenet@alphanet.ch"; posting-host="49079705135647d36d766b8a46d17cd4.nnrp.alphanet.ch"
User-Agent: MacCafe/2.10/peaberry (Mac OS X 10.13.6 (17G14042) - iMac12,1)
Cancel-Lock: sha1:KRZrO55Hp52XgiMKOkpoP1XTn7c= sha256:NB3/aPGXft8JoVHUeFuOwdhVXUvohCy07G83ww/bWk8= sha256:qdhj/zW3Mur2SEs2ooNkjZflWZiqysBYw0vTQzmUigE=
In-Reply-To: <ttv1vi$ugge$1@dont-email.me>
X-No-Archive: YES
Bytes: 4527
Lines: 52

M.V., le 4 mars 2023 à 10:11 dans
<news:ttv1vi$ugge$1@dont-email.me> écrivait :

> Si je remplace les points par des virgules, ça peut peut-être se faire 

Oui, on peut arriver à quelque chose d'à peu près correct (selon la vision d'Olivier) moyennant une
astuce.

Supposons un applescript  qui utilise une fonction "shell" pour nous fournir une donnée numérique
décimale. Le résultat sera fourni à une variable applescript sous forme de chaine texte genre "123.55"
Au prochain calcul (chez un utilisateur dont le séparateur décimal par défaut est la ",") on aura
une erreur apparemment insurmontable sauf à faire un remplacement du point par la virgule dans la
variable obtenue par le script shell.
On peut le faire facilement avec la commande «tr»
exemple

set CalcVar to do shell script "echo 2.105 + 3.5 | bc" # fonction brute
set finalResult to (calcVar as number) * 0.5

partout on aura finalResult = 2.8025 sauf sur Mac "franco-français" qui génèrera une erreur.
Erreur variable selon la version de MacOS :
versions anciennes (jusqu'à Lion inclus, il me semble) erreur en forme de refus à l'exécution de la
coercition
Versions récentes, pas d'erreur signalée lors de la coercition mais le nombre devient un entier
total par suppression du caractère "erroné" soit "5.605" ––> 5605
Ce qui à mon avis est encore pire comme choix de la part des devs d'Apple

En écrivant la première fonction comme ceci
set calcVar to do shell script "echo 2.105 + 3.5 | bc | tr '.' ','"
la ligne suivante (finalResult) passera bien en France, finalResult = 2.8025
 mais génèrera une erreur de coercition partout où le séparateur décimal est le "." : 
"5,605" ––> 5605 et finalResult = 2802.5


l'astuce pour rendre l'applescript universel est la suivante

set decimalSeparator to character 2 of (1 / 2 as string) 
#selon les réglages de pays récupérera "." ou ","
set calcVar to do shell script "echo 2.105 + 3.5 | bc | tr '.' '" & decimalSeparator & "'"
# tr "force" le remplacement au séparateur décimal valide du pays dans calcVar.
set finalResult to (calcVar as number) * 0.5     
# finalResult = 2.8025 dans tous les cas de clavier et pays.

Ne pas oublier de redémarrer le Mac après changement de pays et valeur du séparateur décimal si l'on
veut tester l'absurdité du choix de développeurs d'Applescript. 
Moi arrêté à High Sierra, rien ne me dit que dans des versions plus récentes Apple n'aurait
peut-être corrigé ce bug conceptuel.


-- 
 J.B.