Newsgroup: it.comp.lang.visual-basic
Titolo: Progetto alfabetico

Ciao, forse qualche dritta non manca mai.
Ho un file ASCII, not problem per leggerlo e salvarlo.
Questo file ascii comunque contiene migliaia di linee che dovrei poter
salvare alfabeticamente ancora in un file ascii in 36 file a.txt, b.txt,
c.txt, e.txt....0.txt
In pratica tutti i nomi con A alfabeticamente in a.txt, tutti i nomi con B
alfabeticamente in b.txt ecc...
e questo per ogni file.
Ho una sorgente in C disponibile ma che non mi gusta molto in quanto sfrutta
SORT.EXE del DOS che in alcuni sistemi non è presente e volevo proporre
qualche cosa d'altro e la mia "incapacità si riduce" al "VB6".
Qualche consiglio di come potrei fare?
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

 c.txt, e.txt....0.txt
Ciao, magari e' rozzo, ma io farei cosi':
in primo luogo mi creerei una matrice dinamica string. Leggerei tutti i dati
e li assegnerei ad ogni elemento della matrice (ridimensionala con redim
preserve). Finito di fare cio' farei un gigantesco for..next e controllerei
(con left) il primo carattere di ogni elemento della matrice. A questo punto
userei un select case per creare gli elementi di 36 matrici (precedentemente
DIMensionate). Separati gli elementi scriverei i 36 file .txt
Se devi organizzare alfabeticamente ogni singolo gruppo di stringhe
all'interno dei file, puoi usare un'ulteriore matrice di prova (te la
dimensioni ogni volta con il numero di stringhe contenute nel gruppo che
stai analizzando) e verifichi carattere per carattere se l'elemento da porre
nella matrice di prova deve andare prima o dopo... Se hai bisogno di qualche
esempio chiedi pure, magari in mail privata.
Ciao,
- SonicBoom -

qualche cosa d'altro e la mia "incapacità si riduce" al "VB6".
Apri i 36 file di destinaizone, poi cicli il file di origine e in base
al primo carattere coj un select case spedisci le stringhe sui file di
destinazione oppure associ al codice ascii l'handle del file di
destinazione in modo da evitare il select case.
-- 
Visita il sito comune del NG: 
http://www.it-lang-vb.net
Visit: 
http://www.hardwaretips.com

 c.txt, e.txt....0.txt
Se non ti interessa l'ordine alfabetico si può fare con 8 righe di codice:
Open del file da leggere
Do While not eof
    line input linea
    open Left$(file da scrivere) & ".txt" in Append
    Print linea
    close file da scrivere
Loop
Close
Se ti interessa anche l'ordine alfabetico devi scaricarti dal sito comune
uno delle tante funzioni di sort, aggiungerla al progetto e forse cambiare
il tipo di parametri da ordinare in stringa e il codice diventa di ben 9
righe:
Open del file da leggere
strFile = Input(tutto il file, file da leggere)
Linee() = Split(strFile)
Call FunzioneDiSort(Linee)
For i = 0 to Ubound(linee)
    open Left$(file da scrivere) & ".txt" in Append
    Print linea
    close file da scrivere
Next i
Close
Ciao

 Ciao
il concetto direi sia quello, ma, moilto a naso, io lo spezzerei in piu'
blocchi, liberando ogni vola piu' ram che si puo'.
ciao, a.

 Close
Questo mi sembra un'ottima semplice idea, precludendo quindi l'ordine
alfabetico, premesso che sul file dovrebbe già esserlo eviterei i problemi
ram descritti, quindi sfruttando direttamente il comando "LEFT" del primo
carattere come titolo aggiungo i file in Append
Grazie per tutti i consigli, li sto valutando tutti...
Molto gentili!
Così tribulando sempre con l'installazione sotto XP, mi diletto per
rilassarmi all'aggiunta di questo modulo....;o)))
tnx!
Anto.


 Anto.
per l'ordine alfabetico proverei a giocherellare con l'oggetto ListBox
(.AddItem, .Sorted=True, .ListCount, ecc...)
ciao. buc

 blocchi, liberando ogni vola piu' ram che si puo'.
Purtroppo non si può effettuare un ordinamento a blocchi :(
Piacerebbe (e servirebbe) anche a me!
L'ulica alternativa è usare una struttura indicizzata, ma a questo punto non
so se ne valga la pena.
Anche la soluzione della listbox non migliora la cosa: dove si crede che
stiano le righe di una listbox?
Ciao

 stiano le righe di una listbox?
gia'. e in piu', rispetto a una normale matrice, rallenta senz'altro.
inoltre il listbox direi tenga 32k items.
ciao, a.

 ognuno di quelli.
Ah! Questa č una buona idea.
Ciao

> Ah! Questa č una buona idea.
Che, guarda caso, era stata gia' proposta dal sottoscritto... :)
Aloha!
- SonicBoom -


Si, č quello che faccio, diminuendo il problema memoria sui singoli files e
sfruttando il comando DOS <SORT>
perň non so se esiste su XP o sul 2000 e se sia sufficiente copiarlo da una
parte all'altra... e se giri sotto XP?!?
Č un poco macchinoso e limitato ma il sort del DOS va benino... non conosco
il suo limite.
Grazie delle info... ne faccio tesoro!
bye


 Aloha!
e' effettivamente un caso, non avevo proprio letto la tua risposta.
ed e' comunque abbastanza diversa la gestione.
la tua e' teoricamente piu' veloce.
io faccio la tartarughina.
preferisco.
ciao, j.subsonic

 Che, guarda caso, era stata gia' proposta dal sottoscritto... :)
Io non l'avevo mica capito :P
Secondo me è molto più semplice: fai il while not eof del filettone e lo si
spezza nelle varie lettere a righe "disordinate" (8 righe di codice)
Si rifà il loop su ogni file-lettera caricando il tutto in un array di
stringhe (str() = Split(Input(tutto il file, file-lettera))), lo si ordina e
lo si riscrive sul file-lettera.
in una quindicina di righe si risolve tutto. :)
Ciao

 spezza nelle varie lettere a righe "disordinate" (8 righe di codice)
Non per niente avevo scritto "magari e' rozzo"... :P
Eheheh! Comunque mi fa piacere avere risposta dai guru(s)! :)
Ciao,
- SonicBoom -

> la tua e' teoricamente piu' veloce.
Wow! Essere apprezzato da un guru in persona... un sogno per ogni
frequentatore del NG!!
Pero', non avevo notato l'avverbio "teoricamente"... :)
In ogni caso, alla prossima!!!
Ciao,
- SonicBoom -

 - SonicBoom -
ciao, j.can+guru

 a'ggiava, nnamocene, che qua ce stanno i guru :>
Modestone!!! :)
- SonicBoom -

 ciao, j.can+guru
"can" è dialettale? :P
Ciao

 "can" è dialettale? :P
scusa, mi e' sfuggito.
slang del kookkaboorra.
j.can.dingo<>man.dingo