Comment rediriger le résultat d’une commande console sur une form Un petit exemple pour vous montrer comment grâce à System.Management et System.ServiceProcess il est possible de lancer des commandes dans la console windows et de rediriger le résultat sur une form. Dans cet exemple …
Générer un numéro de licence
Je suis partis d’ algorithme pas très compliqué que j’ai trouver sur la toile , pour vous montrer le principe, bien sur on peut faire quelque chose de très lourd et incassable , mais la n’est pas le but.
soit la chaine de sortie de la forme : xxxx-x-xxxx soit debut-milieu-fin
nous allons travailler sur l’exemple
user=demo et licence=1172-4-6879
Pour arriver à cette générer cette licence nous passerons par 3 etapes, la génération du debut, du milieu et de la fin
Pour tout les caractère présent dans le nom de l’user,
je récupère le code ascii du caractère et je le multiplie au nombre de lettre du nom de l’user
ENTIER fonction (CAR user)
CAR car
ENTIER i, total
POUR i ALLANT DE 1 A longueur(user)
car<–ascii(milieu(user,i,1)
total<– total + (car * longueur(user))
PROCHAIN i
RETOURNE total
pour chaque lettre du nom de l’user
on compte combien de fois les lettres sont présentes
et on les additionnes
ENTIER fonction (CAR user) ENTIER cpt, i, j, milieu CAR chaine POUR i ALLANT DE 1 A longueur(User) Cpt <-- 0 chaine <-- milieu(User, i, 1) POUR j ALLANT DE 1 A longueur(User) chaine2 <-- milieu(User, j, 1) SI chaine <-- chaine2 ALORS Cpt <-- Cpt + 1 FSI PROCHAIN j milieu <-- milieu + Cpt PROCHAIN i RETOURNE milieu
On concatene la valeur ascii de la premiere et de la derniere lettre
ENTIER fonction (CAR user) ENTIER fin fin = Ascii(milieu(User, 1, 1)) & Ascii(milieu(User, longeur(User), 1)) RETOURNE fin
Créer un nouveau projet , et concevez votre form1 avec
- 2 zones de texte : T_user et T_licence
- 2 boutons : B_genere, B_verifie
2 – le code :
Dans l’évènement Click du bouton générer mettez le code suivant :
qui a pour effet de vérifier si les champs sont rempli, si c’est le cas la fonction de génération sera appelé
'si le nom de l'user n'est pas fourni 'on genere un numero de démo If T_user.Text = "" Then T_user.Text = "Demo" End If 'lance la fonction de generation T_licence.Text = genereLicence(T_user.Text)
Public Function genereLicence(ByVal User As String) As String Dim chaine, chaine2 As String Dim Cpt, milieu As Integer Dim debut, fin As String 'tout en majuscule User = UCase(User) 'calcule du début de la licence 'addition de la valeur ascii de chaque caractere * le nombre de lettre de l'user For i = 1 To Len(User) chaine = Mid(User, i, 1) debut = debut + (Asc(chaine) * Len(User)) Next i ' calcule du milieu de la licence 'pour chaque lettre du nom de l'user 'on compte combien de fois les lettres sont présente 'et On les additionne For i = 1 To Len(User) Cpt = 0 chaine = Mid(User, i, 1) For j = 1 To Len(User) chaine2 = Mid(User, j, 1) If chaine = chaine2 Then Cpt = Cpt + 1 Next j milieu = milieu + Cpt Next i ' Fin de la licence ' On concatene la valeur ascii de la premiere et de la derniere lettre fin = Asc(Mid(User, 1, 1)) & Asc(Mid(User, Len(User), 1)) 'la licence genereLicence = debut & "-" & milieu & "-" & fin End Function
Dans le click du bouton vérifier , mettez le code suivant, qui aura pour de tester le numero de licence et de vous retourner si le numero est bon ou pas
If T_user.Text "" And T_licence.Text "" Then Dim rep As Boolean rep = verifieLicence(T_user.Text, T_licence.Text) If rep = True Then MsgBox("La licence est OK", vbInformation, "Licence") Else MsgBox("Mauvais numéro de licence", vbInformation, "Licence") End If End If
Public Function verifieLicence(ByVal user As String, ByVal licence As String) As Boolean Dim car1, car2, debut As String Dim chaine, chaine2 As String Dim cpt, milieu As Integer 'exemple 'user : DEMO 'licence : 1172-4-6879 'on recupere chaque morceau de la la licence 'tab(0)=1172 , tab(1)=4, tab(2)=6879 Dim tab() As String = Split(licence, "-") 'on met toute les lettres en majuscule user = UCase(user) 'etape 1 ' On commence par la fin soit 6879 contenu dans tab(2) 'on recupere 68 que l'on traduit en caractere soit D car1 = Chr(Mid(tab(2), 1, 2)) 'on prend 79 que l'on traduit en caractere soit O car2 = Chr(Mid(tab(2), Len(tab(2)) - 1, 2)) 'si la premiere lettre de l'user ne correspond pas au car1 On sort If Mid(UCase(user), 1, 1) car1 Then verifieLicence = False : Exit Function 'si la derniere lettre de l'user ne correspond pas au car2 On sort If Mid(UCase(user), Len(user), 1) car2 Then verifieLicence = False : Exit Function 'etape 2 'le milieu soit 4 dans notre exemple ' recherche des tirets 'postion du premier tiret Dim pos1 As Integer = InStr(licence, "-") 'position du second tiret Dim pos2 As Integer = InStrRev(licence, "-") ' Calcul pour trouver le numéro du centre ' On va compter combien de fois sont présente les lettres For i = 1 To Len(user) cpt = 0 chaine = Mid$(user, i, 1) For j = 1 To Len(user) chaine2 = Mid$(user, j, 1) If chaine = chaine2 Then cpt = cpt + 1 Next j 'et On les additionne milieu = milieu + cpt Next i 'verification pour le milieu If CInt(tab(1)) milieu Then verifieLicence = False : Exit Function 'etape 3 - le debut - 1172 For i = 1 To Len(user) chaine = Mid(user, i, 1) debut = debut + (Asc(chaine) * Len(user)) 'addition de ASC x le nombre de caractère du nom d'user Next i 'verification If debut CInt(tab(0)) Then verifieLicence = False : Exit Function 'on est arrivé jusque la , la licence est bonne verifieLicence = True End Function
je suis partis sur un algorithme pas trés compliqué pour vous montrer le principe, bien sur on peut faire quelque chose de très lourd et incassable , mais la n’est pas le but.
soit la chaine de sortie de la forme : xxxx-x-xxxx soit debut-milieu-fin
nous allons travailler sur l’exemple
user=demo et générer la licence : licence=1172-4-6879
pour arriver a cette licence nous passerons par 3 etapes, la génération du debut, du milieu et de la fin
calcul du début de la licence
Pour tout les caractère présent dans le nom de l’user,
je récupère le code ascii du caractère et je le multiplie au nombre de lettre du nom de l’user
Citation :pour i=1 à longueur(user)
car=ascii(milieu(user,i,1)
total= total + (car * longueur(user))
prochain i
calcul du mileu de la licence
pour chaque lettre du nom de l’user
on compte combien de fois les lettres sont présente
et on les additionnes
Citation :pour i = 1 à longueur(User)
Cpt = 0
chaine = milieu(User, i, 1)
pour j = 1 à longueur(User)
chaine2 = milieu(User, j, 1)
si chaine = chaine2 alors Cpt = Cpt + 1
prochain j
milieu = milieu + Cpt
prochain i
calcul de la fin de la licence
On concatene la valeur ascii de la premiere et de la derniere lettre
Citation :fin = Ascii(milieu(User, 1, 1)) & Ascii(milieu(User, longeur(User), 1))
You must be logged in to post a comment.