Newsgroup: it.comp.lang.visual-basic
Titolo: Info su combobox

Ciao a tutti.
Ho un discreto record in un file txt composto da 10 stringhe per riga.
Devo caricare in una 5cmbbox le 10 stringhe di ogni riga, ma il problema stà
nel fatto di dover eliminare i doppioni e fare il tutto in pochissimo tempo.
Ci sono riuscita, ma per caricare il tutto impiego circa 2min....
impensabile!
Grazie
--------------------------------
Inviato via 
http://usenet.libero.it

in che senso il file č discreto? parla poco? si fa gli affari suoi?   :-)))
a parte scherzi, hai 10 stringhe per riga.....ma quante righe sono?
quei due minuti potrebbero essere veritieri se hai 1 milione di righe,
effettivamente troppi se le righe sono 100.
non ti conviene trasferire il tutto in un database? fai un programma che
legge il file di testo e salva tutto il contenuto in un database. una volta
che hai la tabella con tutti i dati, basta usare la DISTINCT per filtrare
solo le righe *non* duplicate e cosě carichi la combobox.....
inoltre, posta anche il codice essenziale, gli diamo un'occhiata.....
good coding!!!
-- 
Damiani Liborio Igor
ig...@igordamiani.it
 - 
soft...@igordamiani.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

Hai ragione, per discreto intendevo abbastanza grande, cioè di circa 400-500
righe.
Lo farei volentieri con un db, ma purtroppo non sono capace, sono ancora
alle prime armi.
Carico una cmbbox x volta, la parte di programma quì sotto si ripeterà per
le altre 9 stringhe.
Open App.Path + "\record\record.txt " For Input As #1
Do While Not EOF(1)
Input #1, Scuola, Classe, Materia, CodVol, Autore, Titolo, Editore, Prezzo,
Acc, Tot
 
For CountMat = 0 To IndexMat Step1
If Materia <> cmbMateria.List(CountMat) And flag = 0 Then
Else
flag = 1
End If
DoEvents
Next
If flag = 0 Then
cmbMateria.AddItem Materia IndexMat = IndexMat + 1
End If
flag = 0
 
Loop
 
                StatusLbl.Caption = "Materia OK!!!"
Close #1


prova togliere il DoEvents nel ciclo For.
400-500 righe non mi sembrano tante...
Ciao!!!
*Roby*
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

si vede che sei ancora alle prime armi....allora, qualche consiglio:
1) Nella prima istruzione If (riportata qui sotto), puoi aggiungere
direttamente l'elemento alla combobox. Cosě:
If Materia <> cmbMateria.List(CountMat) And flag = 0 Then
    cmbMateria.AddItem Materia IndexMat = IndexMat + 1
Else
    flag = 1
End If
cioč, dentro il Then, prima mettevi flag=0. Se flag=0, allora metti
l'elemento nella combobox. E' esattamente quello che ottieni con le righe
qui sopra.
2) Nel ciclo For iniziale, togli lo Step 1. Per default, tutti i cicli
For...Next si incrementano di 1.
3) Togli il DoEvents
ottieni questo:
Open App.Path + "\record\record.txt " For Input As #1
Do While Not EOF(1)
    Input #1, Scuola, Classe, Materia, CodVol, Autore, Titolo, Editore,
Prezzo,
    Acc, Tot
    For CountMat = 0 To IndexMat Step1
        If Materia <> cmbMateria.List(CountMat) And flag = 0 Then
            cmbMateria.AddItem Materia IndexMat = IndexMat + 1
        Else
            flag = 1
        End If
    Next
Loop
giusto? spero di non aver fatto qualche errore logico....non so se č piů
veloce.....
in tal caso, scusa.....


 giusto? spero di non aver fatto qualche errore logico....non so se č piů
Allora, io sono sicuramente meno baravo di te.. quindi scusami se mi
permetto di contraddirti ; sul serio!
Ma penso che questo codice non faccia ciň che dica Serena:
Mettiamo di avere un list1 cosě fatto:
A
B
C
D
E
F
Adesso mettiamo io voglia aggiungere  la E in questo list:
Col tuo codice la E verrebbe aggiunta subito: materia <>
cmbmatria.list(countmat)(che poi sarebbe "A") ,e flag=0 per definizione;
ergo la aggiungerebbe subito.. ti trovi??
Secondo me  le ultime istruzioni dovrebbero essere cosě:
    For CountMat = 0 To IndexMat
       If Materia = cmbMateria.List(CountMat)  Then
            flag=1
               exit for
            End if
          If flag=0 then cmbMateria.AddItem Materia IndexMat = IndexMat + 1
    Next
    flag=0
Mi perdoni per questo abuso al tuo codice??? Rispondimi, sono curioso di
spare so non sono io a sparare ca..volate a raffica!!
Grazie e come di tu
Good Coding!

     flag=0
Scusa ma mi sono accorto che l'ultimo if va dopo i next.. Scusa e di nuovo
Ciao!