OVH Cloud OVH Cloud

Lecture chaque ligne

9 réponses
Avatar
Marco
Bonjour,

J'ai un fichier texte qui contient une dizaine de lignes. Sur chaque ligne,
on a NOM+tab+PRENOM

J'ai donc fait un bouton d'import qui "balance" le contenu du fichier TXT
dans une table mémoire.
Mais je ne sais pas comment faire pour lire le contenu ligne par ligne du
fichier nomprenom.txt pour faire un TableAjouteLigne()...

Vous voyez ?

Marco

9 réponses

Avatar
nicolas
IDFichier est un entier
LigneLue est une chaine = ""
CheminFichier = "C:nomprenom.txt"

// ouverture du fichier en mode lecture
IDFichier = Fouvre(CheminFichier,foLecture)

// ouverture en mode lecture OK
SI IDFichier <> -1 ALORS
TANTQUE LigneLue <> EOT
// recupere la ligne
LigneLue = fLitLigne(IDFichier)

// ajout de la ligne dans la table Memoire
tableAjoute("LeNomdeTableMemoire",LigneLue)
FIN
// fermeture du fichier
fFerme(IDFichier)
FIN



Marco a écrit :

Bonjour,

J'ai un fichier texte qui contient une dizaine de lignes. Sur chaque lign e,
on a NOM+tab+PRENOM

J'ai donc fait un bouton d'import qui "balance" le contenu du fichier TXT
dans une table mémoire.
Mais je ne sais pas comment faire pour lire le contenu ligne par ligne du
fichier nomprenom.txt pour faire un TableAjouteLigne()...

Vous voyez ?

Marco


Avatar
nwjb
Le Fri, 22 Sep 2006 15:11:40 +0200, Marco a écrit:

Bonjour,

J'ai un fichier texte qui contient une dizaine de lignes. Sur chaque
ligne,
on a NOM+tab+PRENOM

J'ai donc fait un bouton d'import qui "balance" le contenu du fichier TXT
dans une table mémoire.
Mais je ne sais pas comment faire pour lire le contenu ligne par ligne du
fichier nomprenom.txt pour faire un TableAjouteLigne()...

Vous voyez ?

Marco





Extraitchaine pour séparer nom , prénom
fLitLigne pour lire le fichier

Se trouve facilement dans les aides fichiers et fonctions chaine.

--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
Avatar
Marco
Merci pour vos réponses. Mais il demeure un problème : je trouve toujours
dans ma table (dernière ligne), un enregistrement ...

Comment ne pas avoir cela ?


"nwjb" a écrit dans le message de news:

Le Fri, 22 Sep 2006 15:11:40 +0200, Marco a écrit:

Bonjour,

J'ai un fichier texte qui contient une dizaine de lignes. Sur chaque
ligne,
on a NOM+tab+PRENOM

J'ai donc fait un bouton d'import qui "balance" le contenu du fichier TXT
dans une table mémoire.
Mais je ne sais pas comment faire pour lire le contenu ligne par ligne du
fichier nomprenom.txt pour faire un TableAjouteLigne()...

Vous voyez ?

Marco





Extraitchaine pour séparer nom , prénom
fLitLigne pour lire le fichier

Se trouve facilement dans les aides fichiers et fonctions chaine.

--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering


Avatar
Francis MOREL
Bonsoir,

Merci pour vos réponses. Mais il demeure un problème : je trouve touj ours
dans ma table (dernière ligne), un enregistrement ...

Comment ne pas avoir cela ?



Par exemple change

tableAjoute("LeNomdeTableMemoire",LigneLue)

en

Si LigneLue<>EOT alors
tableAjoute("LeNomdeTableMemoire",LigneLue)

A+
--
Francis MOREL
Avatar
nwjb
Le Fri, 22 Sep 2006 17:30:24 +0200, Francis MOREL
a écrit:

Bonsoir,

Merci pour vos réponses. Mais il demeure un problème : je trouve
toujours
dans ma table (dernière ligne), un enregistrement ...

Comment ne pas avoir cela ?



Par exemple change

tableAjoute("LeNomdeTableMemoire",LigneLue)

en

Si LigneLue<>EOT alors
tableAjoute("LeNomdeTableMemoire",LigneLue)

A+




Lire un minimum la doc , chercher un minimum....


--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
Avatar
nicolas
Le code que j'ai fait ne teste pas la ligne lue!
Ainsi, il te suffit de vérifier si LigneLue <> EOT avant de l'insérer
dans ta table.

tu dois donc rajouter:
SI LigneLue <> EOT ALORS
tableAjoute("LeNomdeTableMemoire",LigneLue)
FIN

Cependant ce test sera effectué pour chaque ligne lue alors que
LigneLue = EOT n'est possible que lors du dernier passage ds la boucle.
Tu peux donc, a la place de tester
la ligne lue, supprimer la derniere de ta table car elle sera forcement
une ligne vide. A toi de choisir
Avatar
Marco
Merci pour vos réponses.
Voici mon code... Je fais pourtant un <>EOT...
Avatar
Marco
OUPSSSS...

IDOuvreFic = fOuvre(FicData_Batch, foLectureEcriture)

SI IDOuvreFic <> -1 ALORS


TANTQUE LigneLue <> EOT


LigneLue = fLitLigne(IDOuvreFic)

TableAjouteLigne(Table_inventaire,ExtraitChaîne(LigneLue,1,","),"",ExtraitChaîne(LigneLue,2,","))


FIN


fFerme(IDOuvreFic)


PL_VerifCB()


SINON

Ouvre(recuperation_impossible)

FIN
Avatar
Gilles TOURREAU
Après mûre réflexion, Marco a écrit :
IDOuvreFic = fOuvre(FicData_Batch, foLectureEcriture)

SI IDOuvreFic <> -1 ALORS


TANTQUE LigneLue <> EOT


LigneLue = fLitLigne(IDOuvreFic)

TableAjouteLigne(Table_inventaire,ExtraitChaîne(LigneLue,1,","),"",ExtraitChaîne(LigneLue,2,","))


FIN



IDOuvreFic = fOuvre(FicData_Batch, foLectureEcriture)

SI IDOuvreFic <> -1 ALORS

LigneLue = fLitLigne(IDOuvreFic)
TANTQUE LigneLue <> EOT

TableAjouteLigne(Table_inventaire,ExtraitChaîne(LigneLue,1,","),"",ExtraitChaîne(LigneLue,2,","))

LigneLue = fLitLigne(IDOuvreFic)


FIN


....



Devrait fonctionner...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr