Oppure

Loading
23/11/10 14:13
magicolotto
Ciao ragazzi ho una listbox (list5)caricata esattamente come questo file di testo :

magicolotto.net/public/Data/Magicolotto/…


carico questa list con la proprieta' sorted = true

pero' non ordina come dovrebbe,ma questo è gia risaputo ...


infatti nella lista cè questa riga :
72 Frequenza del 64 88

cioè il valore piu' alto
poi a seguire

67 Frequenza del 2 24
68 Frequenza del 2 83
68 Frequenza del 28 90
69 Frequenza del 3 9

io dovrei far si ordinare in modo esatto la lista oppure, risolvo ugualmente
se estraggo fuori i valori piu' alti, anche se in questo caso presumo eventuali problemini, del tipo se ci fossero piu riche con lo stesso valore


nb : quante righe puo' generare una listbox?

Ultima modifica effettuata da magicolotto 23/11/10 22:50
aaa
24/11/10 18:42
GrG
ti conviene più che riordinare vedere direttamente le righe dai risultati più alti...

innanzi tutto usa Split per prelevare il numero della riga o volendo anche Instr() insieme alla Mid()

per l'Instr() basta che scrivi (se non sbaglio):
dim num(...) as integer, spazio as string
spazio = instr(1, list1.list(...), " ";)
num(...) = val(mid(list1.list(...), 0, spazio -1))

una volta che in un array hai memorizzato tutti i numeri li ordini in modo crescente usando un pò di cicli...
aaa
24/11/10 19:13
magicolotto
teoricamente avevo pensato piu' o meno quello che hai detto , ma a farlo ... um po' mi viene difficile
aaa
26/11/10 22:03
GrG
mm... dimmi dov'è che non ti riesce e proverò ad aiutarti... e prima ancora dimmi quale sistema vuoi addottare (split, instr, altro?)
aaa
27/11/10 7:10
magicolotto
io ho fatto cosi , ma sono completamente fuori..

il codice dovrebbe fare un confronto tra la 1° e 2° riga e scrivere il maggiore

e cosi via fino all'ultima riga della lista.. pero' non va bene

anche perche esistono quei casi dove il valore maggiore cè per due volte o tre o 4 ...



Dim I As Integer
Dim Y As Integer
Dim Matrice() As String
Dim Matrice1() As String


List4.Clear
For I = 0 To List5.ListCount - 1
  numeri = List5.list(I)
   Matrice = Split(numeri, " ", -1, vbTextCompare)
     nn1 = Matrice(0)

For Y = I + 1 To List5.ListCount - 1
  numeri1 = List5.list(Y)
   Matrice1 = Split(numeri1, " ", -1, vbTextCompare)
     nn2 = Matrice1(0)
If nn1 > nn2 Then
maggiore = nn1
Else
maggiore = nn2
End If
List4.AddItem maggiore
    
Next Y
Next I





puoi usare quello che ritieni che venga piu comodo GrG

anche inserire il tutto in una MSHFLEXGRID , magari per comodità.....


grazie GrG
aaa
02/12/10 16:00
GrG
Adesso ti dico il procedimento teorico che farei io... io prima di tutto mi salverei in un array tutti i numeri iniziali, dopo ciò prenderei il primo numero e con un ciclo lo confrenterei con gli altri valori dell'array uno alla volta finche non ne trovo uno maggiore, a questo punto mi segno quello maggiore e ripartirei dall'inizio della lista fino a che non ne troverei uno ancora più grande, o se non ce n'è segnarmi tutte le righe in cui compare quel numero. Fatto ciò memorizzerei il numero in una variabile e con lo stesso procedimento ricontrollerei la lista controllando che però il numero sia minore di quello della variabile e maggiore di tutti gli altri, e dopo ciò memorizzerei questo nuovo numero più basso del precedente nella stessa variabile e così via...

Poi quando il primo numero della lista (quello da cui inizio) risulterà il più grande allora passerò al secondo, ecc..

Questo è un processo teorico piuttosto complesso (e non assicuro che sia giusto)...

Altrimenti un'altra idea potrebbe essere quella di salvare tutto in un db e appoggiarsi all'sql

boh..

Dimmi tu come hai intenzione di ordinare questi numeri.. prima fatti il processo teorico, poi passa alla pratica ;)

p.s. Scusa se non ti ho risp subito, ma in questo periodo sono mooolto occupato, quindi non ho più molto tempo per stare sul forum
Ultima modifica effettuata da GrG 02/12/10 16:01
aaa