begin process at 2008 08 29 19:26:12
1 233 841 membres
365 nouveaux aujourd'hui
14 294 membres club

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
     Ope
n 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
Ope
n 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
Ope
n 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

Willi
Membre Club
(Admin CS)
Miss1, orthographe stp !
Il me semble que tu as déposé la même question hier, pas la peine de faire des doublons merci

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




[Page 1 Page 2]
Classé sous : ligne, end, split, st, uiop

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS