Newsgroup: it.comp.lang.visual-basic
Titolo: ordinamento in un file .txt

In un file di testo ho una lista di nomi e vorrei realizzare un programma
che li posizioni in ordine alfabetico.
Sui vari siti non ho trovato nulla di gia fatto.
Ho premuto F1 e sembra che la guida sia fatta per esperti.... ho cercato
Sort ...e mi ha consigliato di rivolgermi al newsgroup :-)))
C'e' qualcuno che mi sa dire come procedere?
So come si fa in Perl...ma preferirei usare VB...
:-))) Grazie a tutti
Marco

A) la list box ha una proprietą 'sorted' che va benissimo; inserisci i
dati alla rinfusa nella list box e te li trovi ordinati
B) l'oggetto listview in modalitą report consente ordinamenti; inserisci
i dati nella tabella del report e li puoi ordinare
C) buttali in un DB e riordinali
D) cerca "bubble sort"+vb su google e vedi che accade
E) se sai come si fa in un qualsiasi linguaggio basta tradurre la
'logica' del riordino
vado avanti?
-> GbC
http://www.gbcweb.com

 ha scritto nel messaggio
news:oKtN7.202770$sq5.9...@news.infostrada.it...

Finora sono arrivato alla lettera F) senza risultato
anzi....sono piu' confuso di prima.
Pero' per adesso ho scritto questo.
-------------
Private Sub Form_Load()
Dim NumFile As String
Dim I As Integer
    ReDim Indice(1 To 500)
    NumFile = FreeFile
    Open "address.txt" For Input As #NumFile
        For I = 1 To 500
           Line Input #NumFile, Indice(I)
       Next I
    Close #NumFile
End Sub
e ho capito che legge i primi 500 record ... spero anche di capire come
visualizzarli su una listbox (F1 lo so!)
pero' se vuoi andare avanti fai pure tanto fino alla Z. !!!
Grazie Marco

mi rispondo da solo...F1 funziona quasi sempre...
list1.additem    e la proprietą Sorted su True.
Ora come si fa per contare quanti record ci sono e impostare il valore al
ciclo For...Next ???
Grazie...io intanto continuo a cercare tra libri e F1 :-))
Marco
P.S. poi vi disturbero' per fare il contrario....leggere la list box e
creare un secondo file ordinato.

Sono riuscito anche a contare i cicli....forse non nel modo piu' corretto...
Ho incrementato un contatore ed esco dal ciclo quando si genera l'errore di
limite superato.
Ma proprio non riesco a capire come fare per leggere i dati dalla listbox.
Qualcuno mi da un consiglio?
Grazie Marco

 ha scritto nel messaggio
news:YNwN7.204604$sq5.9...@news.infostrada.it...

continua con l'help, vedrai che trovi praticamente sempre ciò che ti
serve  :)
guarda la funzione EOF(), e la proprietà List delle ListBox ...
Faber

Algoritmi di ordinamento...usa QuickSort....dovresti trovare degli esempi
sul sito comune.
http://www.it-lang-vb.net/download.asp?file=Archivio/Sorgenti/Ordina.zip&ID=
306
(tutto su una riga)
Ciao SIMO
--
__________________
www.sasim.net
* Server IRC : 
irc.azzurranet.org
 --> Canale: #it_lang_vb
* Sito Comune Ng: 
http://www.it-lang-vb.net
* Manifesto del Ng: 
http://www.it-lang-vb.net/docs/Manifesto.txt
* I vecchi messaggi su: 
http://groups.google.com/


Ce l'ho fatta !!!!!!!!
Vi pubblico quello a cui sono arrivato con F1....e potrebbe bastarmi.
ma mi piacerebbe imparare metodi meno grossolani.
Considerando che sto imparando i vari esempi a cui mi avete indirizzato,
erano troppo complicati per me....mi davano un casino di errori.
Questo sono riuscito a farlo con F1...fate bene a suggerirlo :-)))
Qualcuno potrebbe dirmi se ho fatto qualche errore di troppo?
Private Sub Form_load()
' dichiaro le variabili
Dim NumFile As String
Dim N As Integer
Dim I As Integer
Dim B As Integer
Dim Nome As String
Dim fso, f
ReDim Indice(1 To 1000)
Const ForWriting = 2
' scrive un nuovo file di testo
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("testfile.txt", ForWriting, True)
N = 0
NumFile = FreeFile
' apro il file con i nomi
Open "address.txt" For Input As #NumFile
MSFlexGrid1.ColWidth(0) = 4500
For I = 1 To 1000
'leggo le righe del file
  Line Input #NumFile, Indice(I)
'inserisco i nomi in una colonna
  MSFlexGrid1.AddItem Indice(I)
'totale record letti
  N = (I)
On Error GoTo fine
Next I
fine:
Close #NumFile
MSFlexGrid1.Sort = 1
For B = 1 To N
Nome = MSFlexGrid1.TextMatrix(B, 0)
f.WriteLine Nome
Next B
f.Close
End Sub