Lecture fichier txt

kwadadel Messages postés 6 Date d'inscription jeudi 4 septembre 2003 Statut Membre Dernière intervention 27 septembre 2006 - 26 sept. 2006 à 18:00
geobasic Messages postés 69 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 3 octobre 2006 - 27 sept. 2006 à 16:03
Bonjour
Je suis devant un probleme et je ne sais pas le resoudre.
J'ai un logiciel qui me permets d'enrégistrer un fichier txt donnant les coordonnées d'une courbe.
Moi je dois créer un programme qui puisse aller chercher ce fichier et le lire pour  passer le contenu ( les coordonnées) dans une variable de type tableau sous Visual Basic 6. Alors est ce que quelqu'un peux m'aider?
Merci bien

7 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 78
26 sept. 2006 à 18:08
Oui
Suffit de poser des questions.
D'un autre côté, lire un fichier texte, il n'y a rien de compliqué.
Suffirait peut-être simplement de charger deux ou trois sources en cherchant ne serait-ce qu'un tout petit peu ...
0
geobasic Messages postés 69 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 3 octobre 2006
26 sept. 2006 à 18:29
Désolé Jack, ça c'est pas une réponse pour un débutant.

Pour lire un fichier texte en VB, instruction standard :

Open CheminFichier for Input as #1
While Not EOF(#1)
    LineInput #1,buffer
    ....
Wend
Close #1

CheminFichier est un zone en String contenant le chemin du fichier à lire

Dans buffer tu récupère chaque ligne de ton fichier texte. A toi de récupérer les données d'une ligne en fonction du format du fichier pour les stocker dans le tableau.
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 78
26 sept. 2006 à 18:51
Re
Ce n'était que la réponse à ta question.
Le reste n'était qu'une constatation.

Je vais donc traduire et poser la vraie question :
"Comment transformer une chaine en tableau quand on connait le séparateur ?"
La réponse est dans 1000 et 1 questions identiques posées sur ce forum, en tapant simplement "texte tableau" dans le menu Rechercher parmi le forum :

Dim monTableau() As String
... ' lecture d'une ligne
monTableau = Split(buffer, monSéparateur)
où la 1ere donnée est dans monTableau(0) et la dernière dans monTableau(UBound(monTableau))

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
kwadadel Messages postés 6 Date d'inscription jeudi 4 septembre 2003 Statut Membre Dernière intervention 27 septembre 2006
27 sept. 2006 à 14:07
J'ai essayé toutes vos propositions sans avoir le résultat escompté.
Vu mon niveau je ne sais paas si je fais des erreurs mais bon...
je n'ai pas des valeurs dans mon tableau car il faut que je puisse réutiliser ces valeurs dans mon programme.
Merci de me proposer une autre methode
0

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

Posez votre question
geobasic Messages postés 69 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 3 octobre 2006
27 sept. 2006 à 14:10
Peut-tu nous donner un extrait de ton fichier texte ?
0
kwadadel Messages postés 6 Date d'inscription jeudi 4 septembre 2003 Statut Membre Dernière intervention 27 septembre 2006
27 sept. 2006 à 14:59
oui voici les points de mon fichier txt
les virdules servent de séparateurs et les points pour les decimaux

Merci bien

.841065119959932,6.99732873507513
.841079432569234,6.997451920124
.84112042480945,6.99782173110494
.841185180539441,6.99843858447118
.841270785123572,6.99930294046501
.841374323577112,7.00041530335689
.841492878707197,7.00177622169152
.841623529247583,7.00338628854098
.841763347985426,7.00524614176519
.841909399878309,7.00735646427962
.842058740159726,7.00971798433054
.842208412431202,7.01233147577786
.842355446739219,7.01519775838548
.842496857635084,7.01831769811943
.84262964221587,7.02169220745368
.842750778144492,7.02532224568371
.842857221647004,7.02920881924784
.842945905485116,7.03335298205624
.843013736901935,7.03775583582772
.843057595538862,7.04241853043408
.843074331321564,7.04734226425209
.843060762312865,7.05252828452294
.843013672530388,7.05797788771903
.842929809726683,7.06369241991797
.842805883129566,7.06967327718367
.842638561140309,7.07592190595426
.842424468987264,7.08243980343663
.842160186332442,7.08922851800741
.841842244828504,7.09628964962004
.841467125623538,7.10362485021763
.841031256810924,7.11123582415128
.840531010821511,7.11912432860349
.839962701755245,7.12729217401619
.839322582649283,7.13574122452301
.838606842679569,7.14447339838517
.837811604292701,7.1534906684306
.836932920264858,7.16279506249549
.835966770684424,7.17238866386777
0
geobasic Messages postés 69 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 3 octobre 2006
27 sept. 2006 à 16:03
Ok, Je comprend mieux ton problème. Je pense que tu veux enregistrer toutes les valeurs dans un tableau à deux dimensions. le problème est qu'à priori on ne connait pas le nombre de coordonnées à mémoriser, il dépent du nombre de ligne. Il faudrai traiter le problème en 2 temps. D'abort chercher à savoir le nombre de ligne du fichier. La solution serait de lire le fichier en un seul bloc et charger une première table contenant les lignes, en splitant avec le caractère de fin de ligne. Ensuite on balaye cette table pour en extraire les données, en ayant auparavant redemenssionné la table principale. Cela donnerait quelque chose comme ça:

    Dim MonTableau() As String
    Dim Buffer As String
    Dim Lignes() As String, Valeurs() As String, i As Integer
   
    Open MonFichier For Input As #1
    Buffer = Input(LOF(1), 1)
    Close #1
   
    Lignes = Split(Buffer, vbCrLf)
    ReDim MonTableau(UBound(Lignes), 1)
    For i = 0 To UBound(Lignes)
        Valeurs = Split(Lignes(i), ",")
        If UBound(Valeurs) > -1 Then     'pour éviter les lignes à blanc
            MonTableau(i, 0) = Valeurs(0)
            MonTableau(i, 1) = Valeurs(1)
        End If
    Next i
0
Rejoignez-nous