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, :D

moi je m'en fou , je sais le faire :lol:

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 :lol:

Publié : lun. 04/déc./2006 17:56
par Anonyme
j'ai oublié les closefile :oops:

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 ... :lol:

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 ... :lol:
pareil et çà dure depuis 3ans. :twisted:
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