Inverser les lignes d'un fichier texte

phraides Messages postés 7 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2003 - 11 sept. 2003 à 18:56
zelze Messages postés 234 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 12 sept. 2003 à 11:47
Bonsoir tout le monde voila j'aimerai faire une manip sur un fichier texte mais je ne sais pas du tout comment faire :

voila mon fichier texte se structure comme ceci :

aaa
bbb
ccc

ou

aaa
bbb
ccc
ddd

et j'aimerai arriver a inverser les lignes, et que ca donne :

ccc
bbb
aaa

ou

ddd
ccc
bbb
aaa

en fait, j'aimerai que ca marche quelque soit le nombre de ligne ( pair ou impair)

voila si quelqu'un sais comment faire ben je l'ecoute ! :-D

phraides

11 réponses

juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
11 sept. 2003 à 19:54
hummm bah tu pourrait essayé de mettre ds un tablo de string

dim tablo(1 to le_nom_de_ligne)
aprè tu met chaque ligne de ton .txt ds lordre dedans
et tu lé remet ensuite ds lordre inverse
c tout bete
++
juvamine
0
phraides Messages postés 7 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2003
11 sept. 2003 à 20:34
heu ... je comprend pas trop ce que tu veux dire

j'aimerai que le programme le fasse tout seul, aurai tu un bout de code a me proposer ?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
11 sept. 2003 à 21:09
En fait, il faut boucler sur ton fichier (et stocker temporairement ton texte, soit dans une listbox, soit dans un tableau de string) :

Dim int_numero as integer
dim str_texte as string

int_numero = freefile

Open "nomdufichier" for input as #int_numero

while not eof(int_numero)

line input #int_numero, str_texte
listbox1.additem str_texte

wend

close #int_numero

open "nomdufichier" for output as #int_numero

For i = 0 to listbox1.count - 1

write #int_numero, listbox1.list(listebox1.count - i)

next i

close #int_numero

Logiquement, ce code devrait marcher, mais là, je n'ai pas le temps de tester. Tiens nous au courant ;-)

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
0
phraides Messages postés 7 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2003
11 sept. 2003 à 21:37
alors j'ai du modifier un petit peu car tu t t trompé mais c'est pas grave ca marche maintenant ;)

voila le bon code :

Dim int_numero As Integer
Dim str_texte As String

int_numero = FreeFile

Open "c:\endroit.txt" For Input As #int_numero

While Not EOF(int_numero)

Line Input #int_numero, str_texte
listbox1.AddItem str_texte

Wend

Close #int_numero

Open "c:\envers.txt" For Output As #int_numero

For i = 1 To listbox1.ListCount

Write #int_numero, listbox1.List(listbox1.ListCount - i)

Next i

Close #int_numero

a l'arrivé j'ai des guillemet partout dans le fichier texte mais ca c'est pas grave je vais faire un replace et tout va rentrer dans l'ordre :)

voila ben merci beaucoup !!! c tres sympa :-)

phraides.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
11 sept. 2003 à 22:03
Oups, pour éviter les guillemets, mets plutôt Print à la place de Write !

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
11 sept. 2003 à 22:24
Cette manie que vous avez de tous passer par des controles pour rien !!! §Utilisez donc plutôt un tableaau de string, plutot qu'une listbox ... Ce sera bien moins gourmand en tps de traitment et en mémoire !!!

Christophe R.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
11 sept. 2003 à 22:32
Certes, mais expliquer à quelqu'un qu'il faut redimensionner le tableau à chaque tour de boucle sans perdre les données du tableau peut ne pas être évident, surtout lorsque tu ne connaîs pas le niveau de ton interlocuteur.

Le mieux, c'est de donner algorithme pour montrer comment faire, et non de trouver la méthode la plus efficace... mai ce n'est que mon avis personnel

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
11 sept. 2003 à 22:48
OK ! Je respecte ! Mais si tu lui dis pas que c'est pas le top, et s'il débute en prog, y va se coller partout des listbox pour gérer des listes de string, sans besoin d'une GUI !!
Bon ! d'accord excuse-moi je m'énerve un peu la mais suis en rogne ce soir !!!
Le coté obscur de la Force sans doute !!
Christophe R.
0
phraides Messages postés 7 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2003
11 sept. 2003 à 23:23
et les gens vous enervez pas ;)

je ne suis pas tres doué en tableau et cette methode me conviens j'ai juste mit une listbox et pi ca marche :)

phraides
0
juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
12 sept. 2003 à 10:13
nivo rapidité le tablo de string irao 100 fois plus vite, genre pour un fic de 10 ligne ca svoit pas mais pr un fic de 300 lignes tu le ressent

o lieu de remplir ta liste tu rempli un tablo:
dim tablo as string (1 to nb_ligne)
dim cpt as integer
cpt=1
While Not EOF(int_numero)

Line Input #int_numero, str_texte
tablo(cpt)= str_texte

cpt=cpt+1
Wend

et ensuite meme principe pr le remplir a linverse :)

seule difficulté le nbre de ligne:
while not eof(int_numero)
nb_ligne=nb_ligne+1
wend

fai moi confiance sans control le pc te dira merci
0
zelze Messages postés 234 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 30 juillet 2008
12 sept. 2003 à 11:47
' Ya un truc tout con....
' Si ton texte est dans un TextBox:
Dim a As Integer
Dim Text As String

Text = Text1.Text
Text1.Text = ""

For a = 0 To len(Text)
Text1.Text = Text1.Text & Mid(Text, (Len(Text)-a), 1)
next a

' Pour moi c'est Vraiment le plus cour et le plus simple.
Aller @+++ et Bonne prog....
0
Rejoignez-nous