[VB] problème de saut de ligne dans fichier

problème de saut de ligne dans fichier [VB] - Programmation

Marsh Posté le 13-02-2001 à 08:39:18    

Je vous explique mon pb :  
Je veux convertir un fichier txt en HTML... je remplace donc des caractères par d'autres chaines de caractères avec une fonction "replaceall" qu'un forumeur m'a donné :  
chbrln = Chr(13) & "<br>"
'ouverture du fichier en lecture
Open Text1.Text For Input As #1
Do Until EOF(1)
Input #1, cdc2
replaceall cdc2, "à", "à"
[...]
replaceall cdc2, "> <", "><"
'il faut mettre un saut de ligne après un <BR> pour le moteur de recherche
 
replaceall cdc2, "<br>", chbrln
 
Text2.Text = Text2.Text & " " & cdc2
Loop
 
Close #1
 
Voila mais ca marche pas : plantage du style boucle infinie...
Où est donc la solution ???
Ca plante depuis que j'ai rajouté la ligne
replaceall cdc2, "<br>", chbrln
 
HELP !

Reply

Marsh Posté le 13-02-2001 à 08:39:18   

Reply

Marsh Posté le 13-02-2001 à 14:29:32    

A tout les coup, le replaceall est une instruction du genre (en algo):
 1)cherche première occurence.
 2) si trouvé alors remplace puis retour en 1
 3) fin de la fonction
Comme tu remplace <BR> par <BR>+c (c étant un caractère), il trouve toujours un <BR>. Donc boucle infinie.

Reply

Marsh Posté le 13-02-2001 à 14:40:47    

Pour la solution, je laisse faire les pro du VB. A mon avis, un :
replaceall cdc2, "<br>", "<brt>"
replaceall cdc2, "<brt>", chbrln  
pourras corrigé ton problème. Le seul défault, c'est qu'il changera également tout les "<brt>" contenue dans ton fichier.
L'autre solution, c'est d'utilisé deux chaines (ch1 et ch2)et de faire une boucle.
Avant la boucle, tu met ch1 à vide et ch2 à la valeur de cdc2.
Dans cette boucle, tu cherche la position du premier "<br>" dans cdc2, tu concatène ch1 avec la partie de ch2 qui précède le "<br>" + la chaine de remplacement chbrln .Dans la chaine ch2, tu mes toute la partie de ch2 qui suit le "<br>".
Enfin, tu ne sort de la boucle que s'il n'y a plus de "<br>" dans ch2.
Une fois sortie de la boucle, tu remplace cdc2 par ch1.
 
Bonne chance et bon codage.

Reply

Marsh Posté le 13-02-2001 à 15:05:39    

Pour vous faire une idée de la chose, voici la fonction remplaceall...
 
Function replaceall(searchstring As String, findstring As String, replacestring As String) As String
Dim curpos As Long
curpos = 1
 
Do Until InStr(searchstring, findstring) = 0
curpos = InStr(curpos, searchstring, findstring)
searchstring = Left$(searchstring, (curpos - 1)) & replacestring & Right$(searchstring, (Len(searchstring) - curpos - Len(findstring) + 1))
Loop
 
replaceall = searchstring
 
End Function

Reply

Marsh Posté le 13-02-2001 à 15:17:44    

omega2 : ca marche pas plus ton truc...

Reply

Marsh Posté le 13-02-2001 à 16:02:33    

si ca marche, désolé... c'est juste un peu plus long que d'hab...


---------------
Gourou 2001 : vive le glandage, c ma raison d'être !!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed