Bonjour, à tous. J'ai un problème de débutant INCOMPREHENSIBLE.
Je souhaite lire une htm grace a sr.reader() qui va lire les lignes d'un fichier texte ou une page html si vous bouclez la fonction (j'ai utilisé un do loop).
Mon algo fonctionnait bien jusqu'à ce que je dusse le mettes dans un else, qui est encore à l'intérieur d'une autre boucle(pour se déclencher une autre fois; je peux ainsi comparer des fichiers listés contenus dans un htm et une liste de fichiers d'un répertoire).
Impossible de comprendre pourquoi, lors d'un second passage, mon StreamReader, qui pourtant RElis la MEME liste, vaut "nothing"(valeur de fin de lecture du premier passage).
Or...il ne devrait pas car je le REdeclare puis le REinitialise.
Je souffre, help...
Mon code (un peu plus simplifié):
Dim srUpdateHtm As StreamReader = New StreamReader(ToPath & "\update.htm")
For Each f As System.IO.FileInfo In x.Files
If bUpdateUncreated = True Then
AddLog("New file detected ")
Else
Dim bSameChecked As Boolean
Dim line As String
Do
line = srUpdateHtm.ReadLine() 'Lors du deuxieme passage
'line = nothing
bSameChecked = False
Dim linesplitee As String()
If Not line = Nothing AndAlso (line.StartsWith("") AndAlso Not (line.StartsWith(" "))) Then
linesplitee = line.Split("|")
If (linesplitee(2) f.ToString AndAlso Not (linesplitee(5) f.LastWriteTime.ToString)) Then
AddLog("Modified file detected ")
bSameChecked = True
End If
If linesplitee(2) = f.ToString Then
bSameChecked = True
End If
End If
Loop Until line Is Nothing
If bSameChecked Then
AddLog(vbCrLf)
AddLog("New file detected ")
End If
End If
Next
srUpdateHtm.Close()
Je ne sais pas ce que tu veux exactement faire avec ce code puisque tu ne le sais pas très bien toi-même
Ton StreamReader n'est affecté qu'a ton fichier 'update.htm'. Une fois lu par ta boucle, ... plus rien.
Si tu souhaites lire le contenu de ta collection x.Files (la vérité est ailleurs), il faudrait instancier ton streamreader après l'instruction For en l'affectant à ta variable f.
o.O D'accord...en plus de m'insulter, tu réponds pas a ma question
Mon streamReader n'est effectivement pas affecté a autre chose que mon update.htm, c'est fait pour.
Ce streamReader va parcourir ce fichier et produire une liste de chaînes(étant des informations sur des fichiers, dont leurs noms, date de mod, ...)
Je compare, grace a un objet file.info, ces listes de fichiers avec mon objet.
Cela n'est pas vraiment important.
L'important a retenir est :
l'entrée dans une boucle foreach,
puis, à l'intérieur d'un else,
on entre alors dans une autre seconde boucle do loop pour parcourir le reader.
le problème :
Lors de son deuxieme passage (dans la boucle foreich),
la valeur (entre guillemets) est 'nothing'.
Du coup,
Le "do loop Until line Is Nothing "ne reboucle pas
puisque line est à nothing.
Est-ce que je me suis fais comprendre ( car c'est vrai mon premier message était loin d'être clair, je m'en excuse)?
Autant pour moi.
Ce que je devais comprendre dans ta réponse (ou pas...),
C'est qu'une fois lu garce a la boucle do loop, on ne peut plus l'utiliser?
On serait donc obligé de redéclarer+instancier le streamreader pour le relire...?
J'ai poser la ligne
Dim srUpdateHtm As StreamReader = New StreamReader(ToPath & "\update.htm")
juste apres le foreich,
puis le
srUpdateHtm.Close()
, a l'interieur de la boucle foreich (a la fin). Du coup évidement ca marche...
Mais cela reste imcomprehensible pour moi car c'est une liste de string, qui normalement selon sa definition est Enumerable donc peut etre lu par un foreich (ET PAS QU'UNE SEULE FOIS, WTF?!)
Merc de tout coeur de m'avoir répondu.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ton code fait de multiples accès au disque ce qu'il faut éviter. Tu devrais ajouter les lignes de ton fichier update à une List(Of String) et comparer les infos depuis cette liste.
Exactement ce que je voulais faire, mais je ne connais pas à l'avance le nombre de ligne, donc de string à ranger dans la liste. Donc je ne peux instancier mon tableau de string(list of string).
Du moins, c'est ce que je crois. J'espere que j'ai tort...
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 22 févr. 2013 à 21:10
Bonjour,
J'espere que j'ai tort.
Sois donc rassuré : tu as tortr.
Dès lors que la totalité de ton fichier texte est dans une variable string, elle est analysable, "sécable", etc ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Nice. Ca sent le professionalisme.
C'est exactement ce qu'il me fallait. Ca devrait racourcir le temps d'execution du programme.
Super.
Merci encore et bon week end.