Recuperer ligne précedente

Fermé
haifa - 6 juin 2011 à 16:34
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 9 juin 2011 à 17:13
Bonjour,
je dois structurer un fichier texte.
j'ai pu ouvrir le fichier , le lire, mais mon problème c'est que j'arrive pas à récupérer la ligne précédente. En effet j'ai des lignes de cette forme:
1500 texteeeeeeeeeeeee
texte333333333333
text44444444444
1501 text1111111111111
texxxxxxxxxxxxxxxxxxt
je veux que s' il n'y a pas de numéro(1500,etc) au début de la ligne l'ajouter à la ligne précédente
je travail en vb.net, j'ai pu avancé avec "sr.readline "mais je peux pas revenir à la ligne précédente .
si vous pouvez m'aider , ou peut être qu'il y a autre méthode que je voix pas.






3 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
9 juin 2011 à 00:01
Bonsoir,

Je ne connais pas vb.net mais je peux peut-être t'aider à trouver une solution.

Le fichier lu avec sr.readline est-il un fichier à accès direct (accès aux enregistrements par clés) ou séquentiel (accès aux enregistrements dans l'ordre où ils se présentent) ou encore séquentiel indexé (les deux modes d'accès réunis) ?

Si le fichier est à organisation séquentielle et même s'il ne l'est pas d'ailleurs, je pense que le plus simple est encore que ton programme crée un nouveau fichier qui contiendra les nouveaux enregistrements ayant fait l'objet d'une concaténation.

Dis-moi ce que tu en penses, on pourra trouver un algorithme de traitement.

Question:
Dans l'exemple que tu a joint :

1500 texteeeeeeeeeeeee
texte333333333333
text44444444444
1501 text1111111111111
texxxxxxxxxxxxxxxxxxt

Le résultat doit être:

1500 texteeeeeeeeeeeeetexte333333333333
text44444444444
1501 text1111111111111texxxxxxxxxxxxxxxxxxt

où bien
1500 texteeeeeeeeeeeeetexte333333333333text44444444444
1501 text1111111111111texxxxxxxxxxxxxxxxxxt
0
bonjour,
mon fichier est à accès séquentielle je dois avoir le résultat :

1500 ; texteeeeeeeeeeeee ; texte333333333333 ; text44444444444
1501; text1111111111111 ; texxxxxxxxxxxxxxxxxxt
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
9 juin 2011 à 17:13
Bonjour,

Il faut que le programme:

- Définisse et initialise à la valeur nulle une variable de sauvegarde (SAVE_ENREG) de taille suffisante pour contenir un enregistrement correspondant à plusieurs concaténations de lignes.

LECTURES DU FICHIER (si fin de fichier aller à: FIN DE TRAITEMENT (Fin de fichier))

- Lise chaque enregistrement du fichier en input.

- Vérifie si l'enregistrement n'est pas numéroté et doit donc être concaténé (avec le précédent).

- S'il est numéroté ECRIRE la SAUVEGARDE (SAVE_ENREG) dans le fichier en output. SAUF SI SAVE_ENREG est égale à la valeur nulle servant à l'initialiser (cas 1ère fois.).
- Initialise (à une valeur nulle) SAVE_ENREG et sauvegarde l'enregistrement lu dans SAVE_ENREG.
Relise le fichier en input.

- S'il n'est pas numéroté effectuer la concaténation avec l'enregistrement lu et SAUVEGARDé dans la variable SAVE_ENREG (lors de la précédente itération).
Relise le fichier en input.

FIN DE TRAITEMENT (Fin de fichier)

- Ecrive la dernière SAUVEGARDE dans le nouveau fichier.

SCENARIO:
1ere lecture :
ENREG. LU : 1500 texteeeeeeeeeeeee
NE PAS ECRIRE SAVE_ENREG = nul
SAVE_ENREG = 1500 texteeeeeeeeeeeee

2eme lecture :
ENREG. LU : texte333333333333
CONCATENATION SAVE_ENREG = 1500 textee.....texte333333333333

3eme lecture :
ENREG. LU : text44444444444
CONCAT. SAVE_ENREG = 1500 textee...texte3333...text44444444444

4eme lecture :
ENREG. LU : 1501 text1111111111111
ECRIRE SAVE_ENREG = 1500 textee...texte3333...text44444444444
SAVE_ENREG = 1501 text1111111111111

5eme lecture :
ENREG. LU : texxxxxxxxxxxxxxxxxxt
CONCAT. SAVE_ENREG = 1501 text1111111111111texxxxxxxxxxxxxxxxxxt

6eme lecture :
ENREG. LU : FIN DE FICHIER
ECRIRE SAVE_ENREG = 1501 text1111111111111texxxxxxxxxxxxxxxxxxt

Ca demande à être testé. J'ai présumé qu'il peut exister dans le fichier en input 2 enregistrements consécutifs numérotés (dans ce cas là ils ne sont pas concaténés) et que le 1er enregistrement peut ne pas être numéroté. Egalement que le fait de concaténer un enregistrement l'annule en tant que tel dans le fichier en output.
0