Newsgroup: it.comp.lang.visual-basic
Titolo: Eliminare Duplicati

Ragazzi ciao A tutti
allora vorrei chiedervi un aiuto 
io ho un file cosi strutturato 
3500;30/01/2004;9A
6364;30/01/2004;E8
3500;30/01/2004;9A
3501;31/01/2004;9A
3502;01/02/2004;E8
3501;31/01/2004;9A
3502;31/01/2004;CA
3501;31/01/2004;9A
ecc.
ho utilizzato il Type per ordinare i 3 dati
ora però mi serve,il modo quando faccio il ciclo For, di Togliere i dati
uguali, cioè togliere duplicati...
come posso fare???
mi aiutate??
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 -- 
Ordina i dati in modo da ottenere gli eventuali duplicati in sequenza
Genera un Loop di lettura
Confronta il record appena letto con quello precedente
se il record è diverso ...
    Metti in una variabile il record appena letto per il successivo
confronto
    Scrivi il record in un file di uscita
... altrimenti
    Ignora e Prosegui
...
Fine del Loop
Esempio:
Dim DatoIN as String
Dim PrevDatoIN as String
Open FileSource For Input as #1
Open FileDest For Output as #2
Do Until EOF(1)
    Input #1,DatoIN
    If DatoIn<>PrevDatoIN Then
        Print #2,DatoIN
        PrevDatoIN=DatoIN
    End If
Loop
Close 1
Close 2
---
Se tutto queso è una cosa che ti serve una-tantum puoi ordinare il file
usando anche Excel per fare in fretta ... altrimenti trova il modo di
"Sortare" il tuo File di Input leggendolo prima tutto e utilizzando magari
qualche sistema di sorting tipo Bubble ...
Altra possibilità ... (non finissima ... ma efficace) se non sai come
sortare il file e se il file non è di dimensioni abnormi ....
Carica il contenuto del file sorgente in un oggetto List ... setta la
proprietà Sorted=True e in questo caso il loop lo puoi sostituire con:
Dim DatoIN as String
Dim PrevDatoIN as String
Dim I as Integer
Open FileSource For Input as #1
Do Until EOF(1)
    Input #1,DatoIN
    List1.AddItem DatoIN
Loop
Close 1
Open FileDest For Output as #2
For I=0 To List1.RecordCount-1
    If List1.List(I)<>PrevDatoIN Then
        Print #2,DatoIN
        PrevDatoIN=List1.List(I)
    End If
Next I
Close 2

 dati uguali, cioè togliere duplicati...
Se, come dici, sei sicuro che le righe del file sono ordinate
alfabeticamente, puoi procedere come segue:
apri 2 file, quello di origine in lettura e uno nuovo in scittura, quindi
scorri interamente il primo con il solito 'Do Until EOF()' leggendo una riga
alla volta (Line Input); ad ogni ciclo confronti la riga appena letta con
quella letta al ciclo precedente, salvata in una variabile opportuna, e solo
se e' diversa la scrivi nel secondo file.
Al termine del procedimento il secondo file contiene solo i valori univoci.
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown


 Io farei cosě:
/ butto veloce /
    utilizzo il controllo combo in cui inserire una riga alla volta tutte le
righe (se il file ha moooolte righe scarta questa soluzione)
    leggo il file una riga alla volta
    metto in una variabile l'intera riga
        ciclo for..next sul contenuto del combo
            confronto rigaletta = comboX.list()
        se lo trovo esco dal ciclo e leggo riga successiva altrimenti
aggiungo la riga al combo
    cosě fino alla fine del file
    creo un nuovo file prendendo in sequenza le righe del combo
    se tutto va bene elimino il file vecchio
    rinomino il file con il nome vecchio
/butto veloce fine/
Spero di esserti stato utile.
Buon lavoro
Tiziano