Fichier txt

nostra78 Messages postés 137 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 6 décembre 2005 - 21 avril 2005 à 17:28
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 21 avril 2005 à 20:54
Slt,

J'aimerai stocker dans une variable un ligne entière d'un fichier text. J'ai fais un truc du genre :
Do While (i < 255)
Get #iNumFichier, , Car
If Car = 0 Then Exit Do
' Gestion d'une ligne de commentaires
If Car = Asc("'") Then
Line Input #iNumFichier, sRem
i = 0
GoTo Suite
End If If (Car Asc(".") Or Car Asc("0") Or Car = Asc("1") Or _ Car Asc("2") Or Car Asc("3") Or Car = Asc("4") Or _ Car Asc("5") Or Car Asc("6") Or Car = Asc("7") Or _ Car Asc("8") Or Car Asc("9") Or Car = Asc("-"))
sNombre = sNombre & Chr$(bCar)
i = i + 1
Else
If (i > 0) Then Exit Do
End If
..
Je pense qu'il est possible de lire directement tout la ligne et de la stocker dans un variable comme un string.

Merci d'avance
@+ Nostra78

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 avril 2005 à 19:28
Salut
Je ne vois pas trop où est ton problème.
Pour lire une ligne entière, il suffit d'utiliser 'Line Input #x, laString' comme tu l'as fait.
Bon, ce qu'il y a devant, je ne vois pas trop à quoi ça te sert, mais bon.

Pour gérer la détection de fin de fichier :
Do While Not EOF(n°Fichier)
Line Input ...
Loop

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 avril 2005 à 20:32
Salut, j'ai du mal à comprendre ce que tu veux faire. Voilà ce que j'ai compris :

Tu lis le premier car d'un enreg (ligne).
Si ce car a une valeur ascii = 0 tu arrêtes tout ? Tu veux tester une fin de fichier ? Si oui, ce n'est pas comme ça qu'il faut faire.
Si le car lu est "'", tu fais un goto suite. Pourquoi un goto ? et qu'y a-t-il à cette étiquette suite ?
Ensuite, si ce n'est pas du commentaire, tu analyses la chaine car par car jusqu'à trouver un car qui vaut "." ou "0" à "9" ou "-" et dès que tu en as trouvé au moins un et que tu n'en trouves plus tu stoppes l'analyse et tu retournes une chaine contenant ce que tu as trouver ?

Si c'est ça, hors le fait qu'on ne peut mélanger les instructions get et line input sur un même fichier ouvert avec un même open, tu te compliques bien la vie.

Avant que je te donnes une solution, dis moi si je me trompes ou explique ce que tu veux vraiment et à partir de quoi.

Loup Gris
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 avril 2005 à 20:54
Tiens, avant d'attendre ta réponse, j'ai essayé un truc vite fait au vu de ce que j'ai compris de ta question. Voilà le résultat :

Dim i As Integer
Dim sRem As String
Dim iNumFichier As Integer
Dim sNombre As String


iNumFichier = FreeFile

Open "c:\temp\toto.txt" For Input As #iNumFichier
Do While Not EOF(iNumFichier)
Line Input #iNumFichier, sRem
If Left$(sRem, 1) <> "'" Then ' si ce n'est pas du commentaire
sNombre = "" 'on vide la variable
For i = 1 To Len(sRem) ' on analyse la chaine
Select Case Asc(Mid$(sRem, i, 1))
Case 46, 48 To 57, 45 ' si c'est ".", "0" à "9", "-"
sNombre = sNombre & Mid$(sRem, i, 1)
Case Else 'si c'est autre chose
'si on a déjà lu qquechose de correct, on sort
If Len(sNombre) > 0 Then Exit For
End Select
Next
If Len(sNombre) > 0 Then
MsgBox sNombre
End If
End If
Loop

Loup Gris
0
Rejoignez-nous