Lire un fichier...c'est quoi le problème???

Résolu
cire2003 Messages postés 101 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 8 septembre 2010 - 31 déc. 2004 à 13:33
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 31 déc. 2004 à 16:15
Salut, ci-dessous vous trouverez le code que j'utilise pour ouvrir un fichier. C'est quoi ma faute? Tout ce que j'ai l'impression, c'est qu'il ne commence pas a lire le fichier à partir de la première ligne.

Open App.Path & "\data\driver.car.dat" For Input As #1
While Not EOF(1)
Line Input #1, asd.driver
Line Input #1, asd.car
Line Input #1, asd.license
valeur = valeur + 1
blabla=blabla+asd.driver
blabla1=blabla1+asd.car
blabla2=blabla2+asd.license
Wend
Close #1

10 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
31 déc. 2004 à 15:52
Dis voir, ton fichier texte, c'est plutôt un fichier RTF.

Car ta ligne {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Courier New;}} n'existe pas dans un fichier texte normal, quelque soit l'extension que tu lui donne.


Cordialement, CanisLupus
3
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
31 déc. 2004 à 13:55
labout

si asd est une structure alors

Line Input #1, asd

sinon
dim var as string
Line Input #1, var
@+
0
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
31 déc. 2004 à 14:55
Salut cire2003
D'après ton code, à chaque cycle (du While), tu lis trois lignes du fichier.
Exact ?
Sinon, explique sous quelle forme tu les as enregistrées, ou du moins comment se présentent les infos dans le fichier.
A noter : Si ton fichier comporte un nombre de lignes qui n'est pas un modulo de 3, tu auras une erreur de dépassement, car il lira peut-être la 1ere ligne, mais si la seconde n'existe pas, il y aura erreur. C'est le problème d'avoir plusieurs instructions 'Line Input' à l'intérieur d'une même boucle.

Vala
Jack
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
cire2003 Messages postés 101 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 8 septembre 2010
31 déc. 2004 à 15:12
Salut, pour ce qui est du fait qu'il lit 3 lignes de code à la fois, il n'y a pas de problème, car ça ne changera jamais(ce que je veux dire c'est que ce sera tjs ou 3 lignes de moins, ou 3 lignes de plus. De plus, lorsque je lui demande de me dire ce que asd.license, il me donne plein des resultats, mais ce sont ceux de la ligne du dessus. Ce qui veux dire que dans asd.license, j'ai le résultat de asd.car et dans asd.car, j'ai le résultat de asd.driver. Je ne sais pas si cela peut vous aider, mais quand lorsqu'il lit la première ligne, il me dit que le résultat est: {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Courier New;}}. Je n'ai rien de tout cela dans mon fichier. Le problème peut-il venir du fait que j'ai enregistré mon fichier comme .dat alors que c'est du .txt normalement???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
31 déc. 2004 à 15:16
Pour une structure, un tit exemple :

Private Type type_enreg
a As String * 4
b As String * 6
c As String * 6
End Type

Private Sub Form_Load()
Dim enr As type_enreg

Open "c:\temp\essai.txt" For Random As #1 Len = Len(enr) + 2
While Not EOF(1)
Get #1, , enr
MsgBox enr.a & " " & enr.b & " " & enr.c
Wend
Close #1

End Sub


Les string * x c'est la taille de tes champs dans le fichier texte s'ils sont fixes.
Le +2, c'est pour le vbcrlf de fin de ligne.

Cordialement, CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
31 déc. 2004 à 15:19
Heu, j'ai posté trop vite, il serait plus correct de faire comme ça :

Private Type enreg
a As String * 4
b As String * 6
c As String * 6
d As String * 2 ' pour le vbcrlf
End Type

Private Sub Form_Load()
Dim enr As enreg

Open "c:\temp\essai.txt" For Random As #1 Len = Len(enr)
While Not EOF(1)
Get #1, , enr
MsgBox enr.a & " " & enr.b & " " & enr.c
Wend
Close #1

End Sub


Ca éviterait les débordements.

Cordialement, CanisLupus
0
cire2003 Messages postés 101 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 8 septembre 2010
31 déc. 2004 à 15:29
Le problème est justement que ce n'est pas des fichier avec des lignes fixes, sinon, merci pour ce truc.
0
cire2003 Messages postés 101 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 8 septembre 2010
31 déc. 2004 à 15:47
Finalement, j'ai trouvé la solution du problème. J'ai prit wordpad et non notepad pour le faire c'est pour ca que ca me donnait plein de code bizzard (ceux-ci ayant probablement été généré par wordpad pour ce rappeler de la structure et tout le tralala).
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
31 déc. 2004 à 15:54
Oups, trop tard.

Cordialement, CanisLupus
0
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
31 déc. 2004 à 16:15
A noter aussi :
Il ne faut surtout pas que Driver, Car ou License comporte des retours à la ligne, sinon, tes lignes seront décalées !

Vala
Jack
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
Rejoignez-nous