GÉNÉRATEUR DE CHAINES PSEUDO-ALÉATOIRES

Signaler
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45020-generateur-de-chaines-pseudo-aleatoires

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
36
...pour bloquer certains caractères
va demander à un utilisateur de saisir VbNull ^^
et de ne pas spécialement bloquer en taille, bien qu'on verra rarement des "clé" de plus de 10 carac

mais pourquoi pas :
Mid$(sBuffer, iCpt, 1) = chr$(GetRandom(0, 255))
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Ouai enfin pourquoi utiliser les chaines ?? vous etes barge les loulous ! un tableau de 256 octets puis pif paf pouf tu traites des entiers. pas d'aloc inutile que de l'arithmetique et la... je suis sur qu'il y aura de l'amelioration (quand bien meme faudrait ameliorer quoi que ce soit ;) ).

@+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
36
si çà change quand le carac est choisi çà veut dire que tu n'aura jamais de clé > 256...
des suggestions? beh je t'ai dit d'utiliser MID
là çà consomme une tonne de ressources pour rien, c'est très long d'exécution, tu fait un GetCurseurPos alors qu'on connait déjà le X & Y, variables pas typées, pas d'option explicit, et j'en passe!

on va fait mieux qu'une suggestion parce que c'est sans fin là :

Option Explicit
Private Const STR_CHARS As String = "1234567890°-*/+²&é'(-è_çà)=~#{[|`\^@]}AZERTYUIOP¨£QSDFGHJKLM%µ<WXCVBN?.§azertyuiop$qsdfghjklmù<wxcvbn,;:!¤"
Private Const MAX_SIZE As Integer = 1000
Dim sBuffer As String, iCpt As Integer
'
Private Sub Form_Load()
Randomize Timer
iCpt = 0
End Sub
'
Private Sub T01_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button = vbMiddleButton) And (iCpt < MAX_SIZE) Then
iCpt = iCpt + 1 If iCpt 1 Then sBuffer Space(MAX_SIZE)
Mid$(sBuffer, iCpt, 1) = Mid$(STR_CHARS, GetRandom(1, Len(STR_CHARS)), 1)
Me.Caption = "En cours, carac " & iCpt & "/" & MAX_SIZE
T01.Text = sBuffer
If iCpt = MAX_SIZE Then Call MStop
End If
End Sub
Private Sub T01_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbMiddleButton Then Call MStop
End Sub
'
Private Function GetRandom(ByVal iMin As Integer, iMax As Integer) As Integer
GetRandom = Int((iMax * Rnd) + iMin)
End Function
Private Sub MStop()
MsgBox "Terminé"
T01.Text = Replace(sBuffer, " ", vbNullString)
Me.Caption = "La chaîne fait " & Len(T01.Text) & " carac"
iCpt = 0
End Sub
Messages postés
745
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
14 juillet 2015

hihihi, merci PCPT, j'ai modifié la source donc, et euh... j'ai fait en sorte que ça change même quand le caractère est déjà choisi ! D'autres suggestions?
Afficher les 11 commentaires