Lecture d'une string

gregorian Messages postés 57 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 24 mars 2011 - 19 avril 2005 à 11:19
FredArmoni Messages postés 153 Date d'inscription vendredi 2 mai 2003 Statut Modérateur Dernière intervention 2 avril 2010 - 18 avril 2008 à 12:55
Bonjour,

dans la lecture d'un fichier texte, je dois le parcourir pour pouvoir le reformatter et ainsi pouvoir utiliser la fonction append from pour le transformer en table.

J'arrive à l'ouvrir et à parcourir ligne par ligne mais comment parcourir une ligne ???
Existe t'il qqch qui ressemble au string tokenizer en java pour me permettre d'aller en info en info?

Ou alors comment faire? Je n'ai pas trop envie de m'amuser avec de substr() car on fini toujours par ce planter d'un chiffre.

Une autre idée ?

merci

8 réponses

ThierryPerretier Messages postés 103 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 6 juillet 2006 1
19 avril 2005 à 12:41
Bonjour,
Voir la fonction aLines().
Elle va te décomposer du texte en fonction d'un/des délimiteur(s), et remplir un tableau de résultat.

Par exemple :

local array aMots(1)
ALines(aMots,
"Ceci;est;un;test",.t.,
";"
)
FOR each cMot in aMots
? cMot
ENDFOR

Voir aussi les fonctions GetWordNum(),GetWordCount() et StrExtract().
Il n'y donc pas de Substr() pour manipuler du texte.
0
FredArmoni Messages postés 153 Date d'inscription vendredi 2 mai 2003 Statut Modérateur Dernière intervention 2 avril 2010
19 avril 2005 à 13:57
voir les fonctions strextract, substr, strtran, stuff, ...

[mailto:frederic.steczycki@mvps.org Fred]
membre actif d'AtoutFox
MS MVP VFP
0
gregorian Messages postés 57 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 24 mars 2011 1
19 avril 2005 à 16:51
Bonjour,

j'ai essayé de voir pour les fonctions GetWordNum() et GetWordCount() mais il n'y a rien dans l'aide de plus fox pro me dit que la ligne que j'ai lue (en faisant lcLigne = FGETS(monText.txt)) n'est pas une classe et donc je ne peux pas utiliser ces fonctions.

Il me semble que ca va être plus ardu que prévu ce truc ...
0
ThierryPerretier Messages postés 103 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 6 juillet 2006 1
19 avril 2005 à 17:03
Quelle version de Foxpro utilises tu ?
0

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

Posez votre question
gregorian Messages postés 57 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 24 mars 2011 1
19 avril 2005 à 17:07
la 8
0
FredArmoni Messages postés 153 Date d'inscription vendredi 2 mai 2003 Statut Modérateur Dernière intervention 2 avril 2010
19 avril 2005 à 17:18
la manip :


ouvrir le fichier


m.handle=fopen("montext.txt")


if m.handle<0


return && erreur
endif
=fseek(m.handle,0,0)
do while !feof(m.handle)
m.ligne=fget(m.handle)
* ton boulot sur les lignes ici
? m.ligne
enddo

[mailto:frederic.steczycki@mvps.org Fred]
membre actif d'AtoutFox
MS MVP VFP
0
cs_boul3iz Messages postés 1 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 18 avril 2008
18 avril 2008 à 12:28
salut
je posséde foxpro 9.0
et je veux lire un fichier texte ligne par ligne pour ajouter dans une table brut.dbf
mais le probléme quand j'exécute ce code:
nfile=GETFILE("txt","importer")

gnFileHandle =

FOPEN(nfile)

*** Move the file pointer to BOF ***

gnPosition = FSEEK(nfile,254,2)

IF FEOF(gnFileHandle)

WAIT WINDOW 'Le fichier est empty !' NOWAITELSE

WAIT WINDOW

'le fichier contient '+STR(gnPosition)+' !' NOWAITENDIF
FOR nCount 1 TO gnPositioncligne

FREAD(gnFileHandle,254)

WAIT WINDOW 'Importation du fichier de la ligne n° '+ alltrim(cligne)NOWAIT

ENDFOR

= FCLOSE(gnFileHandle)

le problème est toujours le fichier ouvrir est empty.
Merci
0
FredArmoni Messages postés 153 Date d'inscription vendredi 2 mai 2003 Statut Modérateur Dernière intervention 2 avril 2010
18 avril 2008 à 12:55
*** Move the file pointer to BOF ***

gnPosition = FSEEK(nfile,254,2)


ne positionne pas le pointeur au début du fichier mais à 254 octets de la fin...

gnPosition = FSEEK(nfile,254,2)

fseek(nfile,0,0) positionne au début
fseek(nfile,0,2) positionne à la fin (et retourne la taille)

Fred
membre actif d'["http://www.atoutfox.org" AtoutFox]
MS MVP VFP (2000-2007)
http://www.sydev.fr/
0
Rejoignez-nous