[R] Virer les espaces d'une chaîne string formant un nomb

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
MissTi
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 18 févr. 2008 16:31
Status : Hors ligne

[R] Virer les espaces d'une chaîne string formant un nomb

#1

Message par MissTi »

Bonjour à tous,
Je sais que le sujet a été traité mais je n'arrive pas à trouver ma solution.

En lisant un control (via ControlGetText) je récupère un nombre sous forme de texte.
Etant donné que mon but est d'utiliser ce texte (convertit en nombre) dans un calcul, j'ai essayé pas mal de choses pour virere les espaces mais rien de marche.
Le texte lu est de la forme "7 853 251,6"
Les fonctions suivantes me renvoient les résultats suivants:
StringRegExpReplace ($Hauteur, " ", "") ==> "7 853 251,6"
StringReplace($Hauteur, " ", "") ==> "7 853 251,6"
StringStripWS($Hauteur, 8 ) ==> "7 853 251,6"
Du coup, les fonctions de conversion me renvoient les résultats suivants:
Eval(le résultat) ==> 7
Number(le résultat) ==> 7

Rien à faire, je n'arrive pas à enlever les espaces.
Vous avez un tuyau? Je bloque et j'ai l'impression d'avoir épuisé toutes les fonctions susceptibles de faire ça...
Modifié en dernier par MissTi le lun. 14 avr. 2008 14:20, modifié 2 fois.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: Virer les espaces d'une chaîne string formant un nomb

#2

Message par tolf »

C'est étrange que les fonctions StringRegExpReplace, StringReplace et StringStripWS ne retournent pas le bon nombre :o : je les ai testées toutes les 3 avec le texte "7 853 251,6" et les espaces étaient partis.
Peut-être y-a-t-il un problème de variable mal nommée ???

Un petit bout de code permettrait peut-être de mieux voir le problème...
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Virer les espaces d'une chaîne string formant un nomb

#3

Message par ani »

Pour les fonctions que vous citez, je vous invites à faire une petite recherche sur le forum, vous y trouveriez divers exemple, merci au auteurs.

Je te propose une petite fonction, voici un exemple d'utilisation avec StringReplace, que tu pourrais ajouter facilement à ta fonction.

Code : Tout sélectionner

ConsoleWrite(DelEspace("7 8 5 3 251,6"))
Func DelEspace($iNumber)
    If StringInStr($iNumber," ") Then
        $iNumber = StringReplace($iNumber," ","")
    EndIf
    Return $iNumber
EndFunc
sortie = 7853251,6


bon codage ;)

@Missti
les autres post sont ils résolu ?
Si c'est le cas,'noublie pas d'éditer le titre par un [R], merci ;)
MissTi
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 18 févr. 2008 16:31
Status : Hors ligne

Re: [..] Virer les espaces d'une chaîne string formant un nomb

#4

Message par MissTi »

merci pour ton conseil Ani mais cette fonction StringReplace marche bien. Sauf avec le texte que je récupère.
Voici mon code:

Code : Tout sélectionner

WinActivate("MapInfo Professional","")
WinWaitActive("MapInfo Professional","")
WinMenuSelectItem("MapInfo Professional","","&Sélection","St&atistiques...")
WinWait("Calculer Statistiques","&Table:")
$n = ($i * 3) 
Send("{Down "& $n & "}")
ControlClick("Calculer Statistiques","&Table:","Button1")
WinWait("Statistiques","Minimum:")
$SumHauteur = ControlGetText("Statistiques","Minimum:", "Static17")
ControlClick("Statistiques","Minimum:","Button1")
$temp =StringReplace ($SumHauteur, " ", "")
msgbox(0, "vérif hauteur", "$SumHauteur (valeur lue): " & $SumHauteur & @crlf & _
                "$temp = StringReplace ($SumHauteur, " & chr(34) & " "& chr(34) & " , "& chr(34) & chr(34) &") ==> " & $temp  & @crlf & _
                "number($temp)  ==> " & number($temp) & @crlf )
J'ai l'impression que c'est la valeur qu'il lit dans la fenêtre Statistiques qui ne va pas.
Je vous joint des images de la fenêtre en question et du résultat de l'utilisation de StringReplace.
Fichiers joints
Voici la fenêtre dans laquelle je lis ma valeur (ligne "Somme:").
Voici la fenêtre dans laquelle je lis ma valeur (ligne "Somme:").
valeur_lue.jpg (13.42 Kio) Vu 3427 fois
Le résultat reste le même quand j'utilise les fonctions StringRegExpReplace, StringReplace  ou StringStripWS.
Le résultat reste le même quand j'utilise les fonctions StringRegExpReplace, StringReplace ou StringStripWS.
msgboxFinal.jpg (9.49 Kio) Vu 3428 fois
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Virer les espaces d'une chaîne string formant un nomb

#5

Message par ani »

tu utilise mal la fonction et je parie que tu n'a pas regardé non plus l'aide sur stringreplace ?

Code : Tout sélectionner

consolewrite(number(StringReplace("7 598 463,44",chr(32),"","",1)))
Nous renvoie = 7598463

Pour les modification y a juste ceux-ci: ou comme l'exemple plus haut en y indiquant directement number ?

Code : Tout sélectionner

$temp =StringReplace ($SumHauteur, chr(32), "", "", 1)
$temp = 7598463,44

Paramètre
1. String = $SumHauteur
2. Recherche = "chr(32) = a l'espacement"
3. Remplacer la recherche par = rien = ""
4. Options :: Par défault sa valeur est égal à 0 (voir aide)
5. Options :: le 1 = case sensitive (tant qu'il y en a)
MissTi
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 18 févr. 2008 16:31
Status : Hors ligne

[R] Virer les espaces d'une chaîne string formant un nomb

#6

Message par MissTi »

J'ai fini par trouver en épluchant caractère par caractère et en les convertissant avec la fonction Asc(). L'espace correspondait au code ascii 160 et non 32.
Et en effet, en remplaçant la virgule par un point, je récupère aussi le chiffre après la virgule.
C'est résolu.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Virer les espaces d'une chaîne string formant un nomb

#7

Message par ani »

ok :)

la valeur dans chaque fonction est identique c'est l'espacement
les trois sont juste asc(160) chr(32) hex(20)

en mode clavier = alt+0160

...

faut pas mélanger l'asc/chr/hex
normalement dans l'aide doit y avoir le tableau des caractère ascii

si les post sont résolu, il te faudra modifier le titre au lieu de [..] indique [R]

mmerci
Avatar du membre
arrkhan
Niveau 8
Niveau 8
Messages : 528
Enregistré le : sam. 17 nov. 2007 03:30
Status : Hors ligne

Re: [R] Virer les espaces d'une chaîne string formant un nomb

#8

Message par arrkhan »

si je peux rajouter mon grain de sable, alt+0160 est different de alt+032, le premier est un espace insécable, le second un espace classique
MissTi
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 18 févr. 2008 16:31
Status : Hors ligne

Re: [R] Virer les espaces d'une chaîne string formant un nomb

#9

Message par MissTi »

Je me suis doutée qu'il y avais plusieurs types d'espace.
(bien bonne la blagouze arrkhan... :D )
Répondre