[Func] RandomLettre (Générer une lettre)

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
alex1205
Niveau 5
Niveau 5
Messages : 123
Enregistré le : dim. 07 mars 2010 13:59
Status : Hors ligne

[Func] RandomLettre (Générer une lettre)

#1

Message par alex1205 »

Bonjour, travaillant nuit et jour, je viens de mettre au point une fonction (avec l'aide de GMib) servant à générer une lettre au hasard.
Code de la fonction:

Code : Tout sélectionner

Func RandomLettres($strMin = "a", $strMax = "z", $szNb = 1, $szType = 0)
    Local $i, $Char
    For $i = 1 to $szNb
        If $szType = 1 Then
            $Char &= StringUpper(Chr(Random (Asc($strMin), Asc($strMax), 1)))
        ElseIf $szType = 2 Then
            If Random (0, 1, 1) = 0 Then
                $Char &= Chr(Random (Asc($strMin), Asc($strMax), 1))
            Else
                $Char &= StringUpper(Chr(Random (Asc($strMin), Asc($strMax), 1)))
            EndIf
        Else
            $Char &= Chr(Random (Asc($strMin), Asc($strMax), 1))
        EndIf
    Next
  Return $Char
EndFunc
Exemple:

Code : Tout sélectionner

$exemple = RandomLettre("a","z", 2, 2)
Msgbox(0, "", $exemple & "ce sont le deux lettres choisi par RandomLettre")
Alex1205
Modifié en dernier par alex1205 le sam. 17 avr. 2010 11:46, modifié 2 fois.
Le "je ne sais pas" et "j'y arrive pas" n'existe dans mon vocabulaire. Toutes Questions ont une réponse, cherchez et vous la trouverai. Utilisez Recherche du forum et vous verrez. Si [blink]Aucune[/blink] question ne tient à votre problème, créez un sujet.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] RandomLettre (Générer une lettre)

#2

Message par Tlem »

Votre exemple n'est pas juste, car les lettres a et z doivent être entre guillemets.

Ensuite, tant qu'à faire une fonction de ce type, en voici une plus évoluée qui correspondrait un peut plus au nom de la fonction (mais on peut faire très largement encore mieux ;) ) :

Code : Tout sélectionner

; Exemple 1
Msgbox(0, "Une lettre entre a et z", RandomLettre())
; Exemple 2
Msgbox(0, "Une lettre entre g et V", RandomLettre("g","v"))
; Exemple 3
Msgbox(0, "Cinq lettres entre a et z", RandomLettre("a","z", 5))


Func RandomLettre($strMin = "a", $strMax = "z", $szNb = 1)
    Local $i, $Char
    For $i = 1 to $szNb
        $Char &= Chr(Random (Asc($strMin), Asc($strMax), 1))
    Next
  Return $Char
EndFunc
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [Func] RandomLettre (Générer une lettre)

#3

Message par GaRydelaMer »

Bonsoir

je me pose une question avec votre code, comment vous gérer les lettres en majuscules ?

Genre: RandomLettres("e", "E", 5) ou RandomLettres("a", "Z", 2)

J'ai pas tester le code juste pour alimenter le schimilmilililimmimiblick ;)

@Tlem, j'ai mis un "s" à la fin du nom de la fonction pour prendre en compte le paramètre que tu as ajouté ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] RandomLettre (Générer une lettre)

#4

Message par Tlem »

La question des majuscules n'a pas été abordée. Mais si cela devait être fait, puisque entre les majuscules et les minuscules il y a quelques caractères qui nous gêne, on peut tout simplement gérer une variable supplémentaire qui donnerait pour choix : 0 = minuscule, 1 = majuscule, 2 = Mixte
Ensuite l'utilisation de condition pour gérer tout ca, et le tour est joué.

Ca donnerait ceci (avec le 's' rajouté) ;) :
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
GMib
Niveau 4
Niveau 4
Messages : 57
Enregistré le : sam. 23 janv. 2010 12:39
Status : Hors ligne

Re: [Func] RandomLettre (Générer une lettre)

#5

Message par GMib »

On peu eviter les erreurs en mettant $strMin = StringLower ( $strMin ) au debut de la fonction
(faire de meme avec $strMax bien sur)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] RandomLettre (Générer une lettre)

#6

Message par Tlem »

Je n'avais pas rajouté la gestion des erreurs de saisie sur les arguments, exprès pour éviter de compliquer le code, mais dans ce cas il vaudrais mieux faire une gestion complète en testant $strMin et $strMax, pour qu'ils fasse partie de la chaîne "abcdefghijklmnopqrstuvwxyz" (avec StringInStr() par exemple), pour que la longueur de $strMin et $strMax ne dépasse pas 1 caractère, pour que $szNb soit bien un nombre entier > 0 et pour que 0<= $szType >= 2.
Évidement, il faudra aussi gérer en cas d'erreur un retour vide et fixer @error. ;)

Voilà. Je pense que si tout ca est mis en place, ce sera une fonction complète à part entière. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre