Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Ordinare mioFile.txt **URGENTE**


Soluzione da "sfaticato": usa il comando SORT del caro vecchio DOS (che e'
rimasto e lo trovi nella directory windows\command\).
Oppure, con codice VB:
1) leggi il file riga per riga e metti ogni riga in un elemento di un array
si string
2) usi una funzione di sort (l'algoritmo quick sort e' generalmente il piu'
veloce) sull'array
3) salvi gli elementi dell'array in un file di output.
--
Roal Zanazzi
z...@iol.it

Leggi il file e mettilo in un array di strutture del tipo:
type DataItem
    Code as string
    Art as string
    Rif as string
end type
Poi ordini tale array con uno dei tanti algoritmi:
insertion-sort
merge-sort
quick-sort
bubble-sort
heap-sort
....
Di solito nelle librerie ci sono molti testi che parlano di algoritmi,
un ottimo e completo riferimento in tal senso č:
Algoritmi in C
di R.Sedgewick
Addison Wesley
(c'č anche la versione per il C++).
Ma se non conosci il C, potresti provare a cercare qualche
cosa di analogo orientato al basic o al pascal...
Ciao, e buono studio.

informazioni ricavate da un File txt sapete come fare
Il metodo più semplice è quello di passare riga per riga il file ad una list
box con sorted=true.
Ciao
Daniele

...

A parte il fatto che usare un controllo visuale (magari nascosto?) per una
cosa del genere non e' una gran soluzione...
...ma se il file e' troppo grande e non ci sta nella listbox, sei fregato.
--
Roal Zanazzi
z...@iol.it

...ma se il file e' troppo grande e non ci sta nella listbox, sei fregato.
se non sbaglio la listbox accetta fino a 32736 linee e quindi pensavo
bastasse per fare quel che chiedeva Gianluca... anche perchč se il file txt
č piů lungo, qualsiasi cosa tu possa studiare , richiederebbe un tempo
inaccettabile per essere ordinato.
Ciao
Daniele


Dipende cosa si intende per "inaccettabile" ;-) se uno deve sortare un file
di 100MB, credo che possa accettare anche un tempo piuttosto lungo. (a parte
che poi intervengono problemi di spazio di memoria, etc... per questo
esistono anche algoritmi di sorting "a pezzi", studiati apposta per il sort
di files di grandi dimensioni, in questi casi il file non viene letto tutto
in memoria, ma solo un pezzo per volta).
--
Roal Zanazzi
z...@iol.it

...

Esatto, basta dividere il file in.... esempio 3, sortare la prima, sortare
la seconda parte, sortare la terza.....
poi, prendere la secondà metà della prima parte e la prima metà della
seconda parte e sortarla, prendere la seconda metà della seconda parte, la
prima metà della terza parte e sortarla, poi ripetere il tutto per altre due
volte!!!(non mi ricordo bene, dovrebbe bastae due volte!!!
ES:
il file--->FILONE
FI    ->sort
LO  ->sort
NE  ->sort
IL    ->sort
ON ->sort
----------------------------SECONDA VOLTA
FI    ->sort
LO  ->sort
NE  ->sort
IL    ->sort
ON ->sort
---------------------------ULTIMO PASSAGGIO!!
FI    ->sort
LO  ->sort
NE  ->sort
PER SICUREZZA ADESSO LEGGI DUE RIGHE PER VOLTA E CONTROLLI CHE LA SECONDA
SIA PIU' GRANDE DELLA PRIMA!!!!
se una sola volta succede che la prima è più grande ripeti il sort
sopradescritto!!
procedimento lungo e lento, ma funziona anche per grosse liste, utilizando
minor memoria posibile!!!!!
5-7-9-4-3-2-6-8-1-11-15-21
5-7-9-4|3-2-6-8|1-11-15-21
---------------------------------------
4-5-7-9-2-3-6-8-1-11-15-21
4-5|7-9-2-3|6-8-1-11|15-21
--------------------------------------
4-5-2-3-7-9-1-6-8-11-15-21
-------------------------------->secondo passaggio
4-5-2-3|7-9-1-6|8-11-15-21
--------------------------------------
2-3-4-5-1-6-7-9-8-11-15-21
2-3|4-5-1-6|7-9-8-11|15-21
-------------------------------------
2-3-1-4-5-6-7-8-9-11-15-21
---------------------------------->ultimo passaggio
2-3-1-4|5-6-7-8|9-11-15-21
-------------------------------------
1-2-3-4-5-6-7-8-9-11-15-21
--------------------------------------->FINE
in questo caso tutto ok, ma come ti ho detto prima per sicurezza rileggi il
file due righe per volta
...GooD LooK...
EffEPi SySteM
EffEPi...@iol.it
Fabrizio Parrella
 - VB6 -
UIN:21371755