Page 1 sur 2
AIDE sur recherche dans un fichier
Publié : lun. 04/déc./2006 9:53
par cycycycyr
Bonjour,
je suis informaticien mais pas devellopeur du tout
bref mon boss
me demande de luifaire une exe en pure basic
permettant
d'ouvirir un fichier txt
de copier tout les lignes dans comprises un l'intervalle delimiter par le champs saut de page
et pour chaque intervalle creer un fichier acec le contenu
je suis perdu
et a la ramasse
il y a t'il quelqu'un pouvant me proposer une solution
Re: AIDE sur recherche dans un fichier
Publié : lun. 04/déc./2006 10:44
par Backup
cycycycyr a écrit :
de copier tout les lignes dans comprises un l'intervalle delimiter par le champs saut de page
et pour chaque intervalle creer un fichier acec le contenu
j'ai rien compris la !!
tu veux quoi en Français s'il te plait ? ...
t'as un document multipage, et tu veux faire plusieurs fichiers (un par page) avec , c'est ça ?
faudrai d'abord préciser le format du fichier en question !!
(je sent que ça va pas etre évident ce truc ...)
Publié : lun. 04/déc./2006 11:03
par cycycycyr
alors la tu m'as fait rire
Aors je recommence
j'ai un fichier txt tres long
je veux prendre tous les lignes comprises entre deux caracteres
et pour chaque intervalle trouvéje veus generer un fichier
exemple : mon fichier en entrée
cat text.txt
to
jeoeifjoiejfoejfiojeofjef
1536165165161651
eferzfrzefrzefrze
45456465465464
to
45654654564654
trefezfrezfrezfref
to
dfezfezfzefzefe457467465464
57875456
to
42445465465
dezfdzefezf
et je veux en sortie 4 fichier avec les lignes
test1.txt
jeoeifjoiejfoejfiojeofjef
1536165165161651
eferzfrzefrzefrze
45456465465464
test2.txt
45654654564654
trefezfrezfrezfref
test3.txt
dfezfezfzefzefe457467465464
57875456
test4.txt
42445465465
dezfdzefezf
est ce que tu m'as compris ???
Publié : lun. 04/déc./2006 11:34
par Anonyme
Salut, c'est très simple, si tu poste ici, c'est que tu doit apprendre la prog?
Si oui,
Alors tu lis chaque ligne
Lorsque tu découvres un "to"
Tu créer un nouveau fichier
Tu continue a lire le fichier principale
tu écrit ce qui est lu dans le fichier creer à la rencontre de "to"
au prochain "to" tu fermes le fichier
tu répètes ca jusqu'a la fin.
@+
Publié : lun. 04/déc./2006 13:56
par cycycycyr
Merci pour ta réponse
mais commen je fais ma boucle avec le premier "to "
parce que il va m'ouvir et me refermer directement le fichier non ?
je sais ,je suis naze
Publié : lun. 04/déc./2006 15:13
par Anonyme
J'ai modifier un peu ton idée de base, mais l'idée est là :
Code : Tout sélectionner
ReadFile(0,"Texte.txt")
While Eof(0)=0
Buffer$ = ReadString(0)
If Buffer$="to>"
FileCounter+1
CreateFile(FileCounter,"Fichier-"+Str(FileCounter)+".txt")
Buffer$ = ReadString(0)
While Buffer$ <> "<to"
WriteStringN(FileCounter,Buffer$)
Buffer$ = ReadString(0)
Wend
EndIf
Wend
Le fichier doit contenir les balise "to>" & "<to" sans espace àpres le dernier caractère, j'ai simplifier au max le code au détriment de l'analyse afin que mon code "te parle" plus.
Code : Tout sélectionner
to>
Fichier N°1
<to
to>
Fichier N°2
<to
to>
Fichier N°3
<to
to>
Fichier N°4
<to
Publié : lun. 04/déc./2006 17:13
par lionel_om
Cpl.Bator, t'es pas obligé d'utiliser 'FileCounter'.
Faut fermer l'ancien fichier qd on trouve un "<to". Et alors on peut réutiliser le même numéro. Car comme l'a expliqué "cycycycyr", il ne semble pas pouvoir avoir 2 fichiers ouverts en même temps (en écriture).
Publié : lun. 04/déc./2006 17:16
par Backup
cycycycyr a écrit :alors la tu m'as fait rire
ha bah temps mieux,
moi je m'en fou , je sais le faire

Publié : lun. 04/déc./2006 17:37
par Droopy
bref mon boss
me demande de luifaire une exe en pure basic
C'est cool d'avoir un Boss qui impose de bosser avec Purebasic.
Je veux le même

Publié : lun. 04/déc./2006 17:56
par Anonyme
j'ai oublié les closefile
Code : Tout sélectionner
ReadFile(0,"Texte.txt")
While Eof(0)=0
Buffer$ = ReadString(0)
If Buffer$="to>"
FileCounter+1
CreateFile(FileCounter,"Fichier-"+Str(FileCounter)+".txt")
Buffer$ = ReadString(0)
While Buffer$ <> "<to"
WriteStringN(FileCounter,Buffer$)
Buffer$ = ReadString(0)
Wend
If IsFile(FileCounter) and FileCounter <>0 : CloseFile(FileCounter) : EndIf
EndIf
Wend
closefile(0)
Publié : lun. 04/déc./2006 21:10
par Kwai chang caine
@Droopy
Et bah moi, c'est moi qui est imposé a mon boss le PureBasic.
Pourvu que ça dure ...

Publié : lun. 04/déc./2006 21:14
par Flype
Kwai chang caine a écrit :@Droopy
Et bah moi, c'est moi qui est imposé a mon boss le PureBasic.
Pourvu que ça dure ...

pareil et çà dure depuis 3ans.
faut dire que quand on me demande quelquechose même balaise, j'arrive à pondre le truc. et c'est largement grace à la communauté et ma persévérance.
du coup, mes patrons ne se posent meme pas la question du langage. les softs/fonctionnalités demandés sont là alors tout va bien.
Publié : lun. 04/déc./2006 21:41
par Flype
sinon voici une petite solution au problème posé.
ca ressemble beaucoup au code de cpl bator de toutes facons :
Code : Tout sélectionner
#ENTREE = 0
#SORTIE = 1
#SEPARATEUR = "to"
If ReadFile(#ENTREE, "fichier.txt")
While Not Eof(#ENTREE)
ligne$ = ReadString(#ENTREE)
If ligne$ = #SEPARATEUR
compteur + 1
If IsFile(#SORTIE) : CloseFile(#SORTIE) : EndIf
CreateFile(#SORTIE, "fichier" + Str(compteur) + ".txt")
Else
If IsFile(#SORTIE) : WriteStringN(#SORTIE, ligne$) : EndIf
EndIf
Wend
CloseFile(#ENTREE)
EndIf
suite
Publié : mer. 27/déc./2006 16:49
par cycycycyr
Bonjour
Deja merci a tous pour vos reponses cela me donne une bonne piste
le fait en plus est que mon caratere separeteur est le caratere ascii chr(12)
je n'arrive pas a le trouver ,le probeme etant du a la fonction readstring qui prend toute la ligne jusqu'au retour a la ligne et apres il passe a la ligne suivnate ,mon ficher texte vient du monde unix est contient enormement de retour a la ligne
en bref
est ce qui' existe une fonction qui lit l'integralite de fichier ?
est ce qu'il existe un moyen sur pour reconnaitre le charactere asii 12 ou ff comme delimiteur ?
MERCI ENCORE
Merci beaucoup
Publié : mer. 27/déc./2006 16:54
par Progi1984
est ce qu'il existe un moyen sur pour reconnaitre le charactere asii 12 ou ff comme delimiteur ?
Oui si tu lis byte par byte
à toi de tester si asc(readbyte(tonfichier)) = 12