nostra78
Messages postés137Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention 6 décembre 2005
-
21 avril 2005 à 17:28
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 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.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 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