IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Problème de lecture d'un stream dans une boucle


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème de lecture d'un stream dans une boucle
    Bonjour à tous,

    Je cherche à faire le ménage dans des bases.
    Je génère par des script 2 listes comportant des ordinateurs.
    Sachant qu'une liste est propre et pas l'autre j'aurais voulu automatisé le processus trouvé les incohérence. Cependant avec mon script lors de la 2e boucle il ne lis qu'une fois le stream du 2e fichier par conséquent, le test ne s'effectue pas correctement.
    N'y à t'il pas un moyen simple de réinitialise la boucle?
    Cf-ci dessous le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Option Explicit
    Const ForReading = 1, ForAppending=8,  ForWriting = 2
    Const FileAD = "C:\Temp\AD_Computers.txt"
    Const FileLanDesk= "C:\Temp\LanDesk_Computers.txt"
    Const FicResultat= "C:\Temp\NotFound.txt"
    Dim oFSO 'Accès au système de fichier
    Dim oFileAD 'Accès au fichier Fichier FileAD
    Dim oFileLanDesk 'Accès au fichier FileLanDesk
    Dim sLineAD 'Line d'un fichier
    Dim sLineLanDesk 'Line fichier LanDesk
    Dim oFicResultat 'Accès au fichier Resultat
      Set oFSO = CreateObject("Scripting.FileSystemObject")
      Set oFicResultat = oFSO.OpenTextFile(FicResultat, ForWriting, True)
      Set oFileLanDesk = oFSO.OpenTextFile(FileLanDesk, ForReading)
      Set oFileAD = oFSO.OpenTextFile(FileAD, ForReading)
      while Not oFileLanDesk.AtEndOfStream 
    			sLineLanDesk = oFileLanDesk.ReadLine
    			If not sLineLanDesk = Empty Then
    					while not oFileAD.AtEndOfStream
    					sLineAD = oFileAD.ReadLine
    						If Not sLineAD = Empty Then
    								If sLineLanDesk = sLineAD Then
    								'oFicResultat.WriteLine("Les valeurs sont égales")
    								' on ne fait rien
    								Else
    								oFicResultat.WriteLine(sLineLanDesk) 'on écrit le nom du pc Fantôme
    								End If
    						Else
    						'oFicResultat.WriteLine("Ligne vide AD")
    						'on ne fait rien
    						End If
    					Wend
    			Else
    			'oFicResultat.WriteLine("Ligne vide LanDesk")
    			' on ne fait rien
    			End If
    	Wend 
    oFileLanDesk.Close
    Set oFileLanDesk = Nothing
    oFileAD.Close
    Set oFileAD = Nothing
    oFicResultat.Close
    Set oFicResultat = Nothing
     
    msgbox("Process Done...")


    Merci de votre précieuse aide.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Normal tu es arrivé à la fin du fichier, alors lors du 2eme tour de boucle tu sors tout de suite du 2eme while.

    Il faut que tu ouvres et fermes ton second fichier dans la première boucle à chaque tour de boucle.

    Je te conseillerais plutot de lire tes deux fichiers, de les stocker dans des dictionnaires, tableaux, ...
    Puis de comparer ces éléments (plus besoin d'ouvrir et fermer de nouveau le second fichier)
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    et Merci de ta réponse, étant novice dans la matière je vais essayé de faire au mieux avec votre FAQ et mon livre tout comme je l'ai fait précédement :p.
    En tous cas celà fait plaisir de voir un forum ou on ne me dis pas d'entrée de jeux mais quel abruti.
    Je planche sur ton idée.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Kerberos69 Voir le message
    En tous cas celà fait plaisir de voir un forum ou on ne me dis pas d'entrée de jeux mais quel abruti.
    C sur, mais en fait on le pense très fort ... Nan je blague

    Je ne sais pas si tu as déjà fait du C ou un langage équivalent, mais lorsque l'on manipule des fichiers, on manipule plus ou moins directement un curser qui se balade dans le fichier.

    Les fonction readline, readall, et autre, font avancer ce curser. Donc lorsque tu arrives à la fin du fichier, il faut remettre le curser au début si tu veux lire de nouveau le fichier.
    En C, il y a des fonctions pour cela. En VBS tout ce que je connais pour faire pareil, c'est fermer le fichier puis le réouvrir.

    Bref il faut réfléchir aux algos avec l'idée que le curser avance, toujours et encore, jusqu'à la fin du fichier.

    En récupérant tout le contenu d'un fichier dans une variable de chaine de caractères tu te simplifies la vie si tu dois manipuler le contenu plusieurs fois.

    L'idéal est de décomposer ton fichier ligne par ligne dans un dictionnaire ou un tableau de chaine de caractère.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/03/2007, 11h20
  2. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [C#] [WinForms] Lecture d'un fichier dans une archive ZIP
    Par aegypius dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/12/2004, 17h15
  5. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo