AIDE sur recherche dans un fichier

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
cycycycyr
Messages : 5
Inscription : lun. 04/déc./2006 0:55

AIDE sur recherche dans un fichier

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: AIDE sur recherche dans un fichier

Message 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 ...)
cycycycyr
Messages : 5
Inscription : lun. 04/déc./2006 0:55

Message 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 ???
Anonyme

Message 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.


@+
cycycycyr
Messages : 5
Inscription : lun. 04/déc./2006 0:55

Message 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
Anonyme

Message 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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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).
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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:
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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:
Anonyme

Message 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)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

@Droopy

Et bah moi, c'est moi qui est imposé a mon boss le PureBasic.
Pourvu que ça dure ... :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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.
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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
Image
cycycycyr
Messages : 5
Inscription : lun. 04/déc./2006 0:55

suite

Message 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
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message 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
Répondre