Bonjour,
Je suis debutante en vb et je travail avec vb 6.0, alors, j'ai un probleme de comparaison, j'ai utilise deux methodes:
soit avec if strcomp (ch1, ch2)=0 then
soit avec if ch1=ch2
avec ch1 et ch2 sont deux textbox
alors, mon but est de chercher un mot dans un fichier a acces direct d'enregistrements ( enregistrement a 3 champs) et le mot se trouve dans un textbox.
je vous montre le code:
Private Sub cmdchercher_Click()
Dim succes As Integer
succes = 0
For i = 1 To LOF(2) / Len(user)
Get #2, i, user
If (StrComp(txtchercher.Text, user.mat) = 0) Then
MsgBox "Sahit"
succes = 1
Exit For
End If
Next
If succes = 0 Then
MsgBox "NOT FOUND"
End If
End Sub
Private Sub Form_Load()
Open "C:/Users/DELL/Desktop/Projet Vb/user.txt" For Random As #2 Len = Len(user)
For i = 1 To LOF(2) / Len(user)
Get #2, i, user
lstuser.AddItem user.mat & user.password & user.type
Next
End Sub
Le probleme : meme si la matricule existe il affiche NOT FOUND!
J'ai le meme probleme avec plusieurs cas.
Merci de m'aider.
EDIT : Ajout des balises de code (la coloration syntaxique). Explications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.
A voir également:
Comparer deux chaine de caractere en java
Comparer deux string java - Meilleures réponses
Comparer deux chaines de caractères java - Meilleures réponses
Bonsoir,
user est declaree dans un module, comme etant une variable Globale
et oui, j'ai meme afficher le contenu de la variable user ! et il affiche correctement.
Bonjour,
1) comment a été écrit le fichier C:/Users/DELL/Desktop/Projet Vb/user.txt ? (les lignes de code d'écriture)
2) tant l'écriture que la lecture d'un tel fichier devraient normalement se faire par utilisation d'une structure (probablement une structure User), que l'on ne voit pas, du type :
Private Type toto ceci As String * 15 cela As String * 30 encore as string * 10 End Type
et tant la lecture que l'écriture devraient s'y référer par
dim User as toto
Ton Len(User) , dans cet exemple, est 55 et chaque enregistrement contient 3 champs : User.ceci, User.cela et User.encore.
Tout cela est parfaitement exposé de manière très claire et assortie d'un exemple concret non moins clair dans l'aide VB6 !
Je viens d'ailleurs de le vérifier : exemple on ne peut plus clair tant à la rubrique Get (pour la lecture) qu'à la rubrique Put (pour l'écriture). Tout y est, de A à Z !!!!
Dans mon exemple : c'est la structure toto, qui devrait être déclarée avant toute procédure (dans la partie déclaration de ton module de Form) et tu devrais t'y référer (dim User as toto) juste avant l'ouverture.
Et j'éviterais à ta place de faire cela au Form_load, en plein chargement. Je le ferais au Form_Activate.
EDIT : j'ose espérer que tu ne confonds pas type personnalisé avec variable et que tu n'as pas créé directement une structure User.
User doit être une variable et se déclarer (par Dim) comme du type personnalisé défini par une structure (toto, dans mon exemple)
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Bonjour,
j'ai declare la structure et la variable user dans un module par public pour que je puisse l'utiliser dans toutes les feuilles de mon projet.
Public Type employe mat As String * 20 type As String * 20 password As String * 20 End Type Public user As employe
mais il n y a aucun probleme ni dans le fichier ni dans la structure
le seul probleme est dans la comparaison!
et ouvrir le ficher dans le form load mieux que l'ouvrir a chaque fois quand j'ai besoin de ce fichier
La foction qui permet l'ajout dans le fichier est decrite ci dessous et elle fonctionne normalement
Private Sub cmdajouter_Click() Dim i As Integer user.mat = txtmat.Text user.password = txtpswd.Text If optadmin.Value = True Then user.type = "administrateur" ElseIf optuser.Value = True Then user.type = "utilisateur" End If i = LOF(3) / Len(user) Put #3, i + 1, user MsgBox "Vous avez ajouter " & txtmat.Text & " mot de passe : " & txtpswd.Text txtmat.Text = "" txtpswd.Text = "" End Sub
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Je ne vois rien, dans ta procédure cmdajouter_click, qui ouvre le fichier txt concerné.
Faut-il là également deviner ce que tu as écrit ? D'où "sort" maintenant ton fichier #3 ? De quel chapeau ?
Je ne vois pas non plusd, dans tous tes bouts de code, la moindre comparaison ! De quoi avec quoi ?
Bonsoir,
Merci.
Mais j'ai trouve la solution
"Pour info les variables de type String * 20 remplissent la chaine d'espace :
"1234"
devient
"1234"+16 espaces
Essayes avec Trim$ "
Ceci étant dit, on peut se demander pourquoi tout cela (une structure, un fichier plus gourmand, etc) pour si peu. Tu n'as tout de même pas des centaines d'utilisateurs ...
Regarde ce que fait tout bêtement ceci :
Private Sub Command1_Click() 'je crée des utilisateurs Open "d:\voila.txt" For Output As #1 Write #1, "111111"; "toto"; "administrateur" Write #1, "2222"; "titi"; "utilisateur simple" Write #1, "545"; "tata"; "visiteur" Close #1 End Sub
Private Sub Command2_Click() 'j'ajoute des utilisateurs Open "d:\voila.txt" For Append As #1 Write #1, "333"; "bibi"; "utilisateur simple" Write #1, "ccccc"; "bobo"; "administrateur" Close #1 End Sub
Private Sub Command3_Click() 'ici : je passe en revue tous les utilisateurs Open "d:\voila.txt" For Input As #1 Do While Not EOF(1) Input #1, matricule, mot_de_passe, le_type MsgBox "matricule : " & matricule & vbCrLf & "mot_de_passe : " & mot_de_passe & vbCrLf & "type : " & le_type Loop Close #1 End Sub Private Sub Command4_Click() 'là, je cherche l'utilisateur "333" cherche = "333" Open "d:\voila.txt" For Input As #1 Do While Not EOF(1) Input #1, matricule, mot_de_passe, le_type If matricule = cherche Then MsgBox "matricule : " & matricule & vbCrLf & "mot_de_passe : " & mot_de_passe & vbCrLf & "type : " & le_type Exit Do End If Loop Close #1 End Sub
Clique dans l'ordre. Tu vas comprendre.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.