Un connaisseur en visual basic SVP

Résolu
carly09 Messages postés 3 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 16 décembre 2011 - 9 déc. 2011 à 23:37
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 - 18 déc. 2011 à 08:58
Bonjour tout le monde

Je voudrais faire un programme en vb6 qui calcule la vitesse et la précision de frappe sur un clavier..mais le problème c'est que je débute actuellement en vb6 et j'en connais pas grand chose...si y a quelqu'un qui pourra m'orienter vers des tutos,ou bien me donner des idées qui pourront m'être utiles je serai très reconnaissant.
(j'ai bien vu qu'il y a déjà un code portant sur ce thème mais j'en ai rien compris)

Merci

17 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
10 déc. 2011 à 14:05
Il suffira que le demandeur s'interroge sur ce qu'est la vitesse de frappe (elle se mesure au nombre de caractères frappés dans une unité de temps, qui peut être la seconde, la minute, ou autre) et ce que peut être le degré/pourcentage de précision (le nombre d'erreurs).
La chose, dès lors, est on ne peut plus simple, VB6 ou VBNet :*
- un texte à frapper (présenté dans n contrôle)
- une textbox pour y frapper la copie
- un contrôle timer
- un mécanisme de son choix pour relever les différences entre texte à copié et texte saisi. Le rapport de l'un sur l'autre étant le degré de précision.
C'est dur, cela ?
Qu'il se mette un peu au boulot, d'abord




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 6
10 déc. 2011 à 20:07
Bonsoir UCfoutu,

Je me demande, UCfoutu, ne faudrait-il pas mettre çn "e" final à foutu, ah ?

*

Alors si c'est ça, la frappe dactylographoque se calcule à la minute, même que je fais 40 signes minutes (moins les fautes de frappe)...

Ouais c'est prfait ce que tu proposes (si c'est ça) :

Texte au hasard (dans une fichier à cet effet), on ramène disons 120 signes.
Dès que ça commence on lance le timer, on coupe à une minute, on compare les deux texte en chaîne pour enlever un signe par faute, puis le résultat tombe "embauchée", ou "vous repasserez, mais non, pas le fer à repasser, le verbe revenir, ah les femmes" !

Cordialement, Joe.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
11 déc. 2011 à 07:24
Je ne lui ai pas fait son boulot du tout, non
Son "problème" est tellement simple en soi, que la vraie difficulté sera probablement pour lui d'avoir à apprendre les bases, pour s'en servir, y compris sur la base de ce qui lui a été dit, s'il ne les connaît pas déjà. Et cela ne sera donc nullemùent peine perdue.
Quant au Timer :
Aucun problème : ce qu'on doit lui faire faire périodiquement, c'est tout simplement vérifier que l'heure limite n'a pas été atteinte (et non, donc, lui faire calculer une durée limité).

A ce sujet, d'ailleurs, le demandeur a été à ce point flou que l'on peut même se demander s'il a besoin d'un timer, puisqu'il ne précise pas que la mesure de vitesse et de précision de la frappe est à faire dans un laps de temps déterminé ! On pourrait alors : prendre l'heure à l'affichage du texte à copier, la prendre une fois le texte entièrement copié, faire ses calculs ... ce serait plutôt drôle et un peu bêta, un peu comme une épreuve d'examen sans limite de temps , mais il n'en dit pas un mot ===>> alors on s'amuse (et on espère que le demandeur prendra ainsi conscience de la nécessité de prendre le plus grand soin à exposer clairement et complètement les tenants et aboutissants)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 6
15 déc. 2011 à 22:01
Bonjour carly n°9,

Ce n'est pas possible de calculer le taux d'erreur, normalement le test de vitesse de dactylographie c'est avec correction des erreurs, car il n'est pas possible de corriger une erreur complexe, dans la mesure ou on ne va pas savoir ensuite où reprendre, il peut manquer des lettres, des mots, des syllabes ou des mots peuvent être inversés, rajoutés...
On peut simplement comparer les deux textes et dire si c'est bon ou non jusqu'à une erreur.

*

[b]
Est-ce un informaticien qui t'a dit de comparer le taux d'erreurs ? Tu peux lui demander l'algorithme ?
/b

*

Voici le code de calcul de vitesse :
  ' vitesse de frappes avec pourcentage de fautes
' OBJETS
' form1
' text1 propriété multiline=true
' label1
' label2
' timer1

Sub Form_Load()
  ' chargement de texte pour test
  Label1.Caption = "Je suivais la grande dame vêtue de noir qui marchait d'un pas rapide dans l'allée bordée d'arbres. Il fallait presque que je coure pour ne pas la perdre de vue dans cette nuit glaciale de janvier. Les yeux rougis par le chagrin, de gros sanglots me soulevaient la poitrine. Ma mère venait de m'abandonner, de me mettre en pension comme elle disait et c'était cette grande dame tout en noir qui était à présent responsable de ma destinée."
  Timer1.Interval = 60000
  Timer1.Enabled = False
  Text1 = ""
  Label2 = ""
End Sub

Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  Timer1.Enabled = True ' départ
End Sub

Sub Timer1_Timer()
  Dim i As Long
  Dim ligne1 As String
  Dim ligne2 As String
  Dim ligne3 As String
  Dim lgr1 As Long
  Dim lgr2 As Long
  Dim dif As Double
  Timer1.Enabled = False
  Text1.Enabled = False
  lgr1 = Len(Text1.Text)
  For i = 1 To Len(Label1.Caption) ' test de similarité
    If Mid(Label1.Caption, i, 1) <> Mid(Text1, i, 1) Then Exit For
    ligne1 = ligne1 & Mid(Text1, i, 1)
  Next i
  lgr2 = Len(ligne1)
  dif = 100
  If lgr1 <> 0 Then dif = 100 / lgr1 * lgr2
  For i = 1 To Len(ligne1) ' conservation des signes similaires
    If Mid(ligne1, i, 1) <> " " Then ligne2 = ligne2 & Mid(ligne1, i, 1)
  Next i
  ligne3 "Taux de similarité " & Format(dif, "0.00") & "%" & vbLf
  ligne3 = ligne3 & Len(ligne2) & " signes par minute"
  Label2.Caption = ligne3
End Sub


Cordialement, Joe.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
10 déc. 2011 à 02:02
Bonjour,

J'ai déjà vu cette question récemment ...
Cela demande quelques connaissances de base en VB6, si tu ne les as pas, recherches des tutoriels de base sur VB6.
Sache que VB6 est obsolète depuis plus de 10 ans, je te conseillerais plutôt de passer à .NET.

Sinon, recherche du coté du Hooking plutôt.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
10 déc. 2011 à 07:16
Bonjour, NHenry
J'ai déjà vu cette question récemment ...

Tu n'es pas le seul
Et le demandeur :
1) est parfaitement reconnaissable
2) ne change pas ses habitudes en ce qui concerne ses titres !
3) vient tout simplement d'ouvrir un nouveau compte

Tapez le texte de l'url ici.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 6
10 déc. 2011 à 13:05
Bonjour carly n°09

Tu écris :



Je voudrais faire un programme en vb6 qui calcule la vitesse et la précision de frappe sur un clavier.



Comme ça t'a été répondu, faut faire avec vbNet10.

La vitesse n'est pas réellement calculable, ça dépend de la précision voulue, car il faut aussi le temps de réponse, plus selon les priorités des procssus, plus l'écriture à lécran ou ailleurs, ce qui en définitive augmente la durée, et en dessous de 50 à 100 millisecondes ce n'est plus expressive...

Quant à la précision de frappe c'est quoi ?

Au plaisir, cordialement, Joe.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
10 déc. 2011 à 20:17
Pour ce qui est du masculin ou du féminin, c'est comme en argentin, EhJoe ... Masculin pour quand ça ne va pas (exemple : les automobiles, en Porteño)
Et je passe sur la poésie/poétique/pas_éthique (el mar ou la mar ?).
Allez ! Bonne nuit à tous, hein, et faites de belles raves


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
pradiergael Messages postés 13 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 11 décembre 2011
11 déc. 2011 à 00:43
Finalement, uc, tu lui as fait tout le boulot. Il n'y a plus qu'à coder bêtement. C'est tres (trop) gentil.

mais il reste une petite difficulté avec le timer si on veut calculer sur une durée de quelques minutes... :)
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 6
11 déc. 2011 à 01:31
Bonsoir Primagel,

Question pertinente Ben on met le Timer sur quelques minutes...

Cordialement, Joe.
0
carly09 Messages postés 3 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 16 décembre 2011
15 déc. 2011 à 16:43
Bonjour tout le monde

D'abord je vous remercie beaucoup pour vos réponses "NHenry","EhJoe" et "ucfoutu" et je m'excuse de ne pas vous avoir répondu à cause de mon absence ces jours-ci.

Pour ce qui est une question répétée ou bien demandeur reconnaissable...je suis un nouveau membre et ne n'ai jamais posté quoi que ce soit...et c'est la première fois d'ailleurs que je publie dans ce forum que j'ai découvert récemment en cherchant de l'aide à mon problème..et s'il y a des ambiguïtés, c'est dû à mon non maitrise de la langue française puisque je suis pas un français...

Pour ce qui est mon problème...d'abord je suis obligé de programmer en vb6 puisque c'est dans le cadre d'études univ...c'est pour ça je vous demande de m'orienter.

Pour la vitesse de frappe on l'exprime par "nombre de caractères correctes/minute" et pour la précision c'est un "pourcentage" par ex : s'il a commis 5 fautes parmi 50 caractères tapés...sa précision est de 90%...etc

Autres clarifications...d'abord on ouvre un fichier texte prédéfini..dés quand commence la frappe on commence le calcul de la vitesse...et s'il y a une faute, le testeur sera bloqué jusqu'à corriger sa faute...ça c'est juste un petit bout de travail, puisque je dois après le faire marcher dans un réseau et ...etc

Moi ce que je cherche c'est de m'orienter, déjà que "ucfoutu" m'a éclairci beaucoup de choses...reste maintenant que j'apprends les bases nécessaires( j'ai réussi jusqu'à maintenant à programmer un seul programme en vb6 celui d'envoi et réception de messages entre deux personnes avec l'utilisation d'un Timer et Winsock)...pour cela si vous avez des liens ou bien des tutos qui peuvent m'être utiles je serai très reconnaissant..

Merci d'avance
0
carly09 Messages postés 3 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 16 décembre 2011
16 déc. 2011 à 14:46
Merci beaucoup "EhJoe"

Oui c'est un informaticien...mais ici il ne s'agit pas de correction d'erreur..il s'agit de ne pas donner la main à l'utilisateur à continuer son exercice jusqu'à retaper le caractère voulu (c.à.d là où c'était passé l'erreur)

moi je me suis dit que je devrai par exemple créer un tableau dans lequel je mets le texte prédéfini..et après, à chaque frappe je compare le caractère tapé avec le contenu du tableau (j’incrémente à chaque fois l'indice du tableau) si c'est correcte je donne la main à l'utilisateur pour poursuivre son exercice..sinon il sera bloqué jusqu'à correction de sa faute...est-ce faisable cette méthode ?
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
18 déc. 2011 à 00:03
Salut

tout d'abord il faut avoir le meme clavier
Supposons que j'ai frappé faussement un caractère
il va falloir bloqué toutes les touches sauf
le backspace pour effacer et ensuite repermettre
les autres touches

Alors sur ta form tu places un listbox assez
large il doit contenir le text à frapper
en dessous un richtextbox de la meme taille
que le listbox de dessus
dans la dossier C:\tonprojet\bin\Debug
ajoute le fichier txt je l'ai nommé test1.txt
A tester

Imports System.IO
Public Class Form2
    Private index As Integer
    Private line As Integer
    Private counterrors As Integer
    Private listwords As New List(Of String)
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Readfile("test1.txt")
    End Sub
    Private Sub Readfile(ByVal filename As String)
        Try
            listwords = System.IO.File.ReadAllLines(Application.StartupPath & "" & filename).ToList
            ListBox1.Items.AddRange(listwords.ToArray)
            index = 0
            line = 0
            counterrors = 0
        Catch ex As Exception

        End Try

    End Sub

    

    Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress
        Dim ch As Char
        If index = listwords(line).Length - 1 Then
            index = 0
            If line < listwords.Count Then
                line += 1
            End If
        End If
        ch = listwords(line)(index)
        If e.KeyChar <> ch Then
            If System.Char.GetUnicodeCategory(e.KeyChar) <> 14 Then
                e.Handled = True
                counterrors += 1
            Else
                e.Handled = False

            End If
        Else
            index += 1
        End If
    End Sub

   
End Class
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
18 déc. 2011 à 00:37
plutot

Salut

tout d'abord il faut avoir le meme clavier
Supposons que j'ai frappé faussement un caractère
il va falloir bloqué toutes les touches sauf
le backspace pour effacer et ensuite repermettre
les autres touches

Alors sur ta form tu places un button
un listbox assez
large il doit contenir le text à frapper
en dessous un richtextbox de la meme taille
que le listbox de dessus
dans la dossier C:\tonprojet\bin\Debug
ajoute le fichier txt je l'ai nommé test1.txt
A tester

Imports System.IO
Public Class Form2
    Private index As Integer
    Private line As Integer

    Private counterrors As Integer
    Private listwords As New List(Of String)
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Readfile("test1.txt")
    End Sub
    Private Sub Readfile(ByVal filename As String)
        Try
            listwords = System.IO.File.ReadAllLines(Application.StartupPath & "" & filename).ToList
            ListBox1.Items.AddRange(listwords.ToArray)
            index = 0
            line = 0
            counterrors = 0

            Button1.Enabled = False
        Catch ex As Exception

        End Try

    End Sub

    

    Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress
        Dim ch As Char
        
        ch = listwords(line)(index)
        If e.KeyChar <> ch Then
            If System.Char.GetUnicodeCategory(e.KeyChar) <> 14 Then
                e.Handled = True
                counterrors += 1
            Else
                e.Handled = False

            End If
        Else
            index += 1
        End If
        If index = listwords(line).Length Then
            index = 0
            line += 1
            If line = listwords.Count Then

                DirectCast(sender, RichTextBox).Enabled = False
                Button1.Enabled = True
                Exit Sub
            End If
        End If
        
    End Sub

   
    Private Sub Button1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseClick
        MessageBox.Show("nombres d'erreurs de frappe :" & counterrors.ToString)
    End Sub
End Class
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
18 déc. 2011 à 00:38
zut c'est en vb.net et pas vb6
0
Utilisateur anonyme
18 déc. 2011 à 02:02
Salut,

J'ai également participé à la toute première question de "carly09" alias "labelle25" ou encore "okosa"...
Dans cette discussion:

http://www.vbfrance.com/forum/sujet-EST-TREE-IMPORTANT_1559431.aspx?p=2

Comme dit UCFoutu (sans "e", et qui n'a aucun rapport avec le sujet):
C'est dur, cela ?
Qu'il se mette un peu au boulot, d'abord


Et je suis tout à fait du même avis, mais elle arrive bien à ses fins, puisque on commence à lui fournir des codes tout faits.



CF2i - Guadeloupe
Ingénierie Informatique
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 6
18 déc. 2011 à 08:58
Bonjour carly n°09,

Tu écris :


Moi ce que je cherche c'est de m'orienter, déjà que "ucfoutu" m'a éclairci beaucoup de choses...reste maintenant que j'apprends les bases nécessaires( j'ai réussi jusqu'à maintenant à programmer un seul programme en vb6 celui d'envoi et réception de messages entre deux personnes avec l'utilisation d'un Timer et Winsock)...pour cela si vous avez des liens ou bien des tutos qui peuvent m'être utiles je serai très reconnaissant..



J'ai fait un petit chat personnel, gratuit en vb6, ici

A

I.M (message instantané personnel)

Cordialement, Joe.
0