Re: recherche tout aide pour finir mon projet

Posté par Anonyme le 18/5/2006 12:07:38
Je vais expliquer la partie qui me bloque le plus:
En fait je dois trier deux fichiers textes, les séparer en blocs. Une fois ce tri fait je dois mettre un bloc du fichier 1 et un bloc du fichier 2 ... jusqu'à avoir trier tous les blocs.

Un bloc commence toujours par "(--- start of cut #i ---)"
avec i un entier qui peut varier jusqu'à 200 voir plus.
Il se finit par "(--- fin de passe #i ---)".
Entre ces deux chaines on trouve plusieurs lignes qui contiennent des données.

Entre deux blocs il y a des informations que l'on utilise pas pour le fichier final.

Mon projet s'articule autour de 9 fenetres dans lesquelles j'effectuent d'autres traitements qui fonctionnent.

Voici le code de la fentetre où je traite la séparation en bloc du premier fichier. En fait je lis le fichier, je prends toutes les info dont j'ai besoin et je les mets dans une chaine OP.


// traitement par blocs de ce fichier
nomfichier est une chaîne
nomfichier=NOML1
numfichier est un entier
ip est un entier
Textec est une chaîne
Textec ="(--- debut de passe #"
Textes est une chaîne
Textes ="(--- fin de passe #"
final est une chaîne
final=" ---)"
chain est une chaîne
indice est une chaîne
OP est une chaîne
ip= fOuvre(nomfichier,foLectureEcriture)
SI ip=0 ALORS
Erreur("erreur"+nomfichier, ErreurInfo())
SINON
BOUCLE
chain=fLitLigne(ip)
SI chain[[1 A 21]]=Textec ALORS
indice=recherche(chain) // utilisation de la procedure locale recherche pour identifier le i
FIN
SI chain=Textec+indice+final ALORS
SI chain=Textes+indice+final ALORS
SORTIR
FIN
OP=OP+RC+chain //OP sert à stocker le contenu de tous les blocs
FIN
FIN
fFerme(ip)
FIN


// creation du fichier temporel pour verifier le contenu de OP
rescreation est un entier
fichiervir est un chaîne
rescreation=fOuvre(fichiervir,foCréationSiInexistant)
SI rescreation<>-1 ALORS
res est un entier
res=fEcrit(rescreation,OP)// ecriture de la chaine OP dans le fichier appele fichiervir
SI res=-1 ALORS
Erreur("erreur décriture",ErreurInfo())
FIN
fFerme(rescreation)
FIN


PROCEDURE recherche(chain)
indice est une chaîne
pos est un entier
pos=Position(chain,"#")
pos=pos+1
indice=chain[[pos]]
RENVOYER indice




Ce code ne fonctionne pas. J'ai essayer plusieurs méthodes pour trier les fichiers mais en vain.
Que faire??

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=4024&post_id=16777