[R] Nombre de caractère dans un String

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
yanius
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mer. 23 févr. 2011 17:51
Status : Hors ligne

[R] Nombre de caractère dans un String

#1

Message par yanius »

Bonjour à tous !

J'étais en train de créer une calculatrice un peu plus avancée, lorsque je suis tombé sur un petit problème !
En effet, lorsque l'utilisateur clique sur "=" le programme vérifie la syntaxe du calcul.
Dans le cas où l'utilisateur entre par erreur "3.14.159", j'ai créer une fonction qui revoie le nombre de fois qu'apparaît un caractère.
Mais elle ne semble pas fonctionner correctement. Où ai-je fait une erreur ?

Code : Tout sélectionner

[spoiler=]Func NmbrElementString($string11, $element)
    $num = 0
    $len1 = StringLen($element)
    $one = StringInStr($string11, $element)
    If $one = 0 Then
        Return 0
    Else
        $len2 = $len1 + $one
        While $one = 0
            $stri1 = StringMid($string11, 1, $one)
            $stri2 = StringMid($string11, $len2)
            $stri3 = $stri1 & $stri2
            $one = StringInStr($stri3, $element, 0, 0)
            $num = $num + 1
        WEnd
    Return $num
    EndIf
EndFunc[/spoiler]
Modifié en dernier par yanius le sam. 23 juil. 2011 01:05, modifié 1 fois.
0.110001000000000000000001000
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#2

Message par PandiPanda »

Bonsoir,
Si vous ne vouliez seulement renvoyer le nombre de fois qu'apparaît un caractère
vous pouvez utilisez ceci;
► Afficher le texte
Modifié en dernier par PandiPanda le sam. 23 juil. 2011 00:48, modifié 1 fois.
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#3

Message par mikell »

yanius a écrit :Dans le cas où l'utilisateur entre par erreur "3.14.159"
Pourquoi ne pas intercepter ça à l'écriture ? dans ma calculette j'ai mis pour l'entrée du point :

Code : Tout sélectionner

$valeur = GuiCtrlRead($input)
[color=#FF0000]If NOT StringInStr($valeur , ".")[/color] Then GuiCtrlSetData($input, $valeur & ".")
If $valeur = "" Then GuiCtrlSetData($input, "0.")
 
qui empêche l'utilisateur d'écrire 2 points dans la même valeur
mucho plus simple :mrgreen:
" 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
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#4

Message par TT22 »

Juste, c'est bien de penser au point mais faut pas oublier de faire la même chose pour la virgule :wink:
Cordialement,
TT22
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#5

Message par timmalos »

Si cette fonction doit etre appelée souvent, préférez la réponse de PandiPanda avec les StringRegExp. Cela sera plus rapide comme traitement, empêchant le scintillement de la fenêtre.
Avatar du membre
yanius
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mer. 23 févr. 2011 17:51
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#6

Message par yanius »

Oui, en effet cette fonction doit être appelée à chaque évènement du bouton "=".

Euh juste une question : Comment faire pour convertir un élément string (en l'occurrence $string = GuiCtrlRead($input)) en un élément "nombre" ? Par exemple convertir $string = "1+2" en $string = 1+2.
0.110001000000000000000001000
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#7

Message par PandiPanda »

Bonsoir,
ceci devrai aider; Number()

petit exemple;

Code : Tout sélectionner

$array=StringSplit("1+2","+")
MsgBox(0,"",Number($array[1])+Number($array[2]))
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#8

Message par mikell »

Autre solution

Code : Tout sélectionner

$string = "1+2" 
$string = Execute($string)
msgbox(0,"", $string)
" 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
yanius
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mer. 23 févr. 2011 17:51
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#9

Message par yanius »

Merci à vous pour vos réponses !

Je préfère quand même utiliser la fonction "Execute" car je ne comprends pas très bien comment marche la fonction "StringSplit" :mrgreen: !
0.110001000000000000000001000
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#10

Message par PandiPanda »

A vrai dire je connaissais même pas Execute()
:shock:

Note;
StringSplit() va permettre de couper un string grâce à des délimiteurs.
Ainsi prenons un exemple ceci;
$string="je me ferai delimiter par | parceque je le vaut bien :O"
si je fais un $Array=StringSplit($string,"|"); j'aurai un Array contenant 3 choses [par default]
Array[0] => la longueur de l'array [le nombre d'élement]
Array[1] => "je me ferai delimiter par "
Array[2] => " parceque je le vaut bien :O"
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
yanius
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mer. 23 févr. 2011 17:51
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#11

Message par yanius »

A vrai dire moi non plus :lol: (merci mikell !)

Merci pour l'explication !
0.110001000000000000000001000
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#12

Message par PandiPanda »

Si le poste est résolu,
mettre la balise [R] vous permettrai de pas vous faire "gronder" par les différents modérateurs qui aime le pouvoir ... :wink:
Pour ceci, il vous suffit d'editer le titre de votre 1er message !!
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#13

Message par mikell »

Execute est plus adapté, mais pour StringSplit, tu as tort !

Code : Tout sélectionner

_NmbrElementString("3.1.4.15.9", ".")

Func _NmbrElementString($text, $caract)
    $nbrs = StringSplit($text, $caract)
 msgbox(0,"", "dans " & $text & ", nombre de points : " & $nbrs[0]-1)
EndFunc
:mrgreen:
Modifié en dernier par mikell le sam. 23 juil. 2011 00:44, modifié 1 fois.
" 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
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#14

Message par PandiPanda »

Edit; la je suis d'accord ^^
Modifié en dernier par PandiPanda le sam. 23 juil. 2011 00:47, modifié 2 fois.
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Nombre de caractère dans un String

#15

Message par mikell »

désolé pour le doublon, j'avais mal lu ton code :oops:

Code : Tout sélectionner

$text = "3.1.4.15.9"
$nb = _NmbrElementString($text, ".")
msgbox(0,"", "dans " & $text & ", nombre de points : " & $nb)

[color=#4040FF]Func _NmbrElementString($text, $caract)
    Return UBound(StringSplit($text, $caract, 2))-1     ; <= PandiPanda found this ^^
EndFunc[/color]
 
Modifié en dernier par mikell le sam. 23 juil. 2011 12:01, modifié 1 fois.
" 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
yanius
Niveau 4
Niveau 4
Messages : 72
Enregistré le : mer. 23 févr. 2011 17:51
Status : Hors ligne

Re: [R] Nombre de caractère dans un String

#16

Message par yanius »

Voilà sujet résolu !! Merci encore. :D
0.110001000000000000000001000
Répondre