Un connaisseur en visual basic SVP

Résolu
Signaler
Messages postés
3
Date d'inscription
samedi 1 janvier 2011
Statut
Membre
Dernière intervention
16 décembre 2011
-
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
6
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
6
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.
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
6
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
13
Date d'inscription
jeudi 7 mai 2009
Statut
Membre
Dernière intervention
11 décembre 2011

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... :)
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
6
Bonsoir Primagel,

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

Cordialement, Joe.
Messages postés
3
Date d'inscription
samedi 1 janvier 2011
Statut
Membre
Dernière intervention
16 décembre 2011

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
Messages postés
3
Date d'inscription
samedi 1 janvier 2011
Statut
Membre
Dernière intervention
16 décembre 2011

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 ?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
53
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
53
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
53
zut c'est en vb.net et pas vb6

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
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
6
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.