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 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: References: <1q6wq7l.wkh7dy1ty8eazN%andre_favre@af.invalid> 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: X-No-Archive: YES Bytes: 4527 Lines: 52 M.V., le 4 mars 2023 à 10:11 dans é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.