[R] Extraire les chiffres d'une variable

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Krakotte
Niveau 1
Niveau 1
Messages : 3
Enregistré le : dim. 18 oct. 2015 18:24
Status : Hors ligne

[R] Extraire les chiffres d'une variable

#1

Message par Krakotte »

Bonjour à tous,

Dans le cadre d'un projet étudiant j'ai plusieurs centaines de mesures à effectuer sur un logiciel. J'ai décidé d'automatiser ses mesures avec une maccro AutoIt basique.

Le logiciel me sort une valeur que je copie et insert dans une variables pour je puisse la traiter ensuite. Le seul problème est qu'il me sort des variables de deux styles :

"Force : 200.000" ou "Force : 1,600M" (c'est des Newtons).

De là, j'aimerai obtenir 200 000 et 1 600 000 pour pouvoir effectuer mes calculs.
Il faut donc que je supprime le ".", la ",", "Force :" et remplace M par "000".

Je pense qu'une fonction String[...] peut m'aider, mais je ne maitrise pas du tout ce genre de fonction...
Si vous pouviez m'aider à faire le tri dans ma variable ce serait super !

Voici la tête du code :

Code : Tout sélectionner

; mise en route du test

MouseClickDrag("", 971, 658, 991, 675, 0) ; récupération de la force trouvé
Send("^c")
    $Force = ClipGet() 
 [...]
 ......... ; conversion de la variable en un chiffre simple
 [...]

; calculs et sortie de résultat
 
Modifié en dernier par Krakotte le lun. 19 oct. 2015 07:02, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#2

Message par jguinch »

Est-ce que ça te convient ?
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#3

Message par mikell »

$string2 = "Force : 1M"
:!:
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#4

Message par jguinch »

ah ouais, la je suis pas bon... :roll:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Krakotte
Niveau 1
Niveau 1
Messages : 3
Enregistré le : dim. 18 oct. 2015 18:24
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#5

Message par Krakotte »

Merci beaucoup à vous ! J'ai fais plusieurs test de tout les cas possible et la valeur retourné est toujours correct :) Merci vous m'enlevez une belle épine du pied !

A présent j'aimerai comprendre (histoire de me coucher moins bête) :
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#6

Message par mikell »

Voilou, with comments :mrgreen:

Code : Tout sélectionner

Func _ExtractNum($sText)
   [color=#00BF00]; remplace tout ce qui n'est [u]PAS[/u] (un chiffre/un point/une virgule/la lettre M) par rien[/color]
   [color=#00BF00] ; c'est le "^" qui marque cette négation, \d = un chiffre[/color]
    Local $out = StringRegExpReplace($sText, "[^\d.,M]", "")
   [color=#00BF00]; dans le résultat, s'il y a la lettre M :[/color]
    If StringInStr($out, "M") Then
        [color=#00BF00]; remplace la virgule (si elle existe) par un point (on obtient alors un décimal en notation EN)
        ; et multiplie ça par 10 puissance 6[/color]
        $out = StringReplace($out, ",", ".")*10^6
    Else
        [color=#00BF00]; sinon supprime le point (s'il existe)[/color]
        $out = StringReplace($out, ".", "")
    EndIf
    [color=#00BF00]; et la fonction retourne le résultat final[/color]
    Return $out 
EndFunc
Note qu'il y a une finesse qui exploite une particularité du fonctionnement interne d'AutoIt en matière de calcul, exemple :

Code : Tout sélectionner

Msgbox(0,"test", "1.5M" * 3)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#7

Message par jguinch »

Je reprends quand même mon code, histoire de finir ce que j'ai commencé :
► Afficher le texte
@Mikell : 1,234 te retourne 1,234 , donc ça risque de poser problème pour un futur calcul :P
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Krakotte
Niveau 1
Niveau 1
Messages : 3
Enregistré le : dim. 18 oct. 2015 18:24
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#8

Message par Krakotte »

Super ! Merci pour les commentaires je comprend bien mieux :)

Apparement Autoit se fiche d'avoir un M qui traine dans sa variable avant de la multiplier... C'est bon à savoir !

En tout cas merci à vous deux pour votre aide, bonne soirée !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#9

Message par jguinch »

Oui, car une opération sur une chaîne va convertir la chaîne en nombre avant de procéder à l'opération.
La page d'aide de la fonction Number te donnera l'explication sur ce sujet (voir la partie Remarks)

Code : Tout sélectionner

$string = "1234M"
MsgBox(0, "", Number($string) )
 
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#10

Message par jguinch »

@Krakotte : merci de passer le sujet en [R] si le problème est résolu.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Extraire les chiffres d'une variable

#11

Message par mikell »

jguinch a écrit :@Mikell : 1,234 te retourne 1,234 , donc ça risque de poser problème pour un futur calcul :P
Ah, on fait le malin maintenant :mrgreen:
Oui, j'avais un tout petit peu (quand même) noté ça mais vu l'échelle des valeurs mentionnées, le risque d'avoir 1,234 Newtons m'a semblé peu probable :roll:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre