Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : la comparaison ligne par ligne ne se fait pas [ Archives Visual Basic / Divers ] (Miss1)
|
la comparaison ligne par ligne ne se fait pas
le 12/05/2006 08:43:07

Miss1
|
salut j''essaie de céer un script en vb6 qui permet de vérifier si un chaine de caractere est ds une ligne ex :je cherche les mot "toto" et "titi".ds chaquene des ligne 'les variables fic = "C:\dede.txt " ' chemin d'acces Dim uiop As Integer uiop = FreeFile Open fic For Input As #uiop 'ouverture du fichier dede Line Input #uiop, st 'lire premiere ligne a = Split(st, ";")(0) 'retirer les infos voulue b = Split(st, ";")(2) c = Split(st, ";")(4) d = Split(st, ";")(5) Do While EOF(?) 'faire ttq fin de fichier 'tester If InStr(a, ? ) Then a = ? If InStr(b, ? ) Then b = ? If InStr(c, ? ) Then '? représente var mais je sé pas laquels c = ? MsgBox ("identiqe") Else: i = i + 1 End If End If End If End If Loop Close #1 End Function
la premiere partie qui est en rose ne pose pas pb c'est la parrtie ou il faut que je verifie que "toto" et "titi" ne sont pas ds chaqune des ligne si c le cas passer ligne suivante si c pas le cas modifier . le pb vient de la partie comparer je ne ses pas comment faire car mon teste n'affiche rien. Merci de bien vouloire m'aide c'est asssez urgent
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 09:18:21

econs
(Admin CS)
|
Salut, Mes modifications en vert : fic = "C:\dede.txt " ' chemin d'acces Dim uiop As Integer Dim Fin As Boolean uiop = FreeFile Open fic For Input As #uiop 'ouverture du fichier dede Fin = False While (Not EOF(uiop) And Not Fin) Line Input #uiop, st 'lire premiere ligne a = Split(st, ";")(0) 'retirer les infos voulue b = Split(st, ";")(2) c = Split(st, ";")(4) d = Split(st, ";")(5) If Instr(1,a, "toto")>0 Or Instr(1,a,"titi")>0 Then MsgBox "chaine trouvee, on arrête de parcourir" Fin = True End If If Instr(1,b, "toto")>0 Or Instr(1,b,"titi")>0 Then MsgBox "chaine trouvee, on arrête de parcourir" Fin = True End If If Instr(1,c, "toto")>0 Or Instr(1,c,"titi")>0 Then MsgBox "chaine trouvee, on arrête de parcourir" Fin = True End If If Instr(1,d, "toto")>0 Or Instr(1,d,"titi")>0 Then MsgBox "chaine trouvee, on arrête de parcourir" Fin = True End If Wend Close #uiop Et comme je ne comprend pas bien ce qu'il faut faire quand une occurence de toto ou de titi est trouvée, je me contente d'arrêter de parcourir le fichier. On y verra sans doute plus clair avec d'autres explications. Au passage, je ne saisis pas encore l'intérêt d'éclater la chaine 'st', car la fonction Instr(), appliquée directement à 'st', et non à 'a', 'b', 'c' et 'd', donnerait le même résultat, en moins de lignes de code. Manu
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 09:23:06

Miss1
|
qd une occurance de toto ou de tit est trouver il faut remplacer ds catte ligne les vauleur "toto" ou "titi" par "koi". moi je faisai un split pour pouvoir garder les mots que je cherche retrouver ds des variables je connais pas un autre moyen a part sa.
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 09:28:05

Miss1
|
o fet a,b,c,d st mes variables ds laquel j'ai les 5 mot a comparer. je suis pas supper douer mais je ne crois pas que le teste et bon car moi je veut vérifier si les 5 mot sont ds la ligne 2,3,4,5..........................; et je ne comprend pas sa
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 09:55:18

Miss1
|
et comment je sais c ql ligne qui a ce mot car faut que ej le sache
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 10:13:57

econs
(Admin CS)
|
Réponse acceptée !
OK, compris. Ben, voici le résultat : Private Sub ComparaisonLigneALigne() Dim uiop As Integer Dim jkml As Integer Dim tablo() As String Dim fic As String Dim fic1 As String fic = "C:\dede.txt " ' chemin d'acces fic1 = "C:\dedetemp.txt" uiop = FreeFile Open fic For Input As #uiop jklm= FreeFile Open fic1 For Output As #jklm While Not EOF(uiop) Line Input #uiop, st tablo = Split(st,";") For k=LBound(tablo) To Ubound(tablo) If Instr(1,tablo(k),"titi")>0 tablo(k) = Replace(tablo(k),"titi","koi") End If If Instr(1,tablo(k),"toto")>0 tablo(k) = Replace(tablo(k),"toto","koi") End If Next k Print #jklm, Join(tablo,";") Wend Close #jklm Close #uiop Kill "C:\dede.txt" Name "C:\dedetemp.txt" As "C:\dede.txt" End Sub '---------------------------------------------- Public Function Join(Source() As String, _ Optional sDelim As String = " ") As String Dim nC As Long Dim sOut As String For nC = LBound(Source) To UBound(Source) - 1 sOut = sOut & Source(nC) & sDelim Next Join = sOut & Source(nC) End Function Manu -------------------------------------------------------------------------------------------- Avant de poster un message, n'oubliez pas de consulter le
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 10:39:53
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 10:47:58

Miss1
|
merci de ton aide sa m'a aider de modifier mais j'ai encore une question tout au début la comparaison doit se faire avec les variable a,b,c,d,e, qui ont les mot et leur position . il me suffit juste de remplacer ds le for pour lui indiquer tt les variable a vérifier ligne par ligne c sa
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 10:49:05

Miss1
|
Willi c vrai j'avais oublier et désoler pour les fautes
|
|
|
|
Re : la comparaison ligne par ligne ne se fait pas
le 12/05/2006 11:13:42

econs
(Admin CS)
|
Dans la boucle "For k ...", k est l'indice du mot dans ta ligne. st="azerty;toto;qsjdhq;qzhd" pour "toto", k vaut 1 (car k démarre à 0) Manu
|
|
|
Classé sous : ligne, end, split, st, uiop
|
Téléchargements
Logiciels à télécharger sur le même thème :
|