View Full Version : ListBox..come ordinarli numericamente ?
visodont
24-07-2004, 19:07
Visual Basic 6
In un ListBox si può fare un ordinamento alfanumerico ma non numerico.
Come fare per ordinare in ordine numerico crescente un LisBox di nomi contenenti prima un dato NUMERICO e poi il nome ?
Ordinati in base al NUMERO e non alfanumericamente.
Per Es:
1000 Zanasi Mario
2000 Aramini ugo
100 Pretti davide
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
COME E' POSSIBILE poi, ordinare i dati di un' array in ordine cresente o discendente ?
Con il vecchio Clipper5 bastava semplicemente un bel: Sort(Nome array), ascendente o discendente.
Possibile che con il Visual Basic così evoluto questo non si possa fare ?
Sono rimasto "incastrato" con questo problema, non riesco a venirne fuori !
Grazie,
Zeno.
Originariamente inviato da visodont
Con il vecchio Clipper5 bastava semplicemente un bel: Sort(Nome array), ascendente o discendente.
Possibile che con il Visual Basic così evoluto questo non si possa fare ?
Bhe.. se tutto fosse già pronto allora nn ci dovrebbero nemmeno chiamare Programmatori, ma utilizzatori di funzioni :p
Bhe, se vuoi ordinare sta listbox in maniera numerica è semplice, basta che gli ordine e siccome tutti hanno il numero, verranno ordinati in maniera numerica.
Basta che attivi il metodo SORT della listbox e ti le ordina in maniera alfabatica (cioè in pratica basandosi per il codice ascii) .... i numeri stanno prima dei caratteri alfabetici, per cui li ordina correttamente!!
Per l'ordinamento nn esiste in VB una funzione giù pronta.. dovresti usare i metodi di ordinamenti manuali :)
Vedi tu quale usare! ;)
visodont
27-07-2004, 20:13
Ho provato già, prima ma purtroppo il list box anche se alla sinistra della stringa c'è un numero non fa un ordinamento di tipo numerico ma alfabetivo.
Non sono un programmatore professionista , sono solamente un hobbista che è rimasto incastrato in quel problema e non risco a urdinare un' array numericamente come vorrei.
Grazie,
Visodont
visodont
27-07-2004, 20:15
Originariamente inviato da matpez
Bhe.. se tutto fosse già pronto allora nn ci dovrebbero nemmeno chiamare Programmatori, ma utilizzatori di funzioni :p
Però il CLipper era vecchio ma permetteva di fare una cosa simile. Questo è un progresso da gambero.
Visodont ( che è programmatore solamente per hobby )
Originariamente inviato da visodont
Ho provato già, prima ma purtroppo il list box anche se alla sinistra della stringa c'è un numero non fa un ordinamento di tipo numerico ma alfabetivo.
Non sono un programmatore professionista , sono solamente un hobbista che è rimasto incastrato in quel problema e non risco a urdinare un' array numericamente come vorrei.
Grazie,
Visodont
Sarà ma io ho fatto delle prove e il tuo esempio me lo ordina così:
100 Pretti davide
1000 Zanasi Mario
2000 Aramini ugo
Che ha di sbagliato?
visodont
28-07-2004, 10:31
Ho riprovato in questo momento e il risultato e il seguente :
120 Zanella.......
1500 Corgniali .....
1680 Quaresina .....
180 Arami. ..........
ecc.....
Come vedi l' ordinamento è errato. No ordina numericamente.
Non soprprio cosa fare.
Soche esiste un metodo per ordinare un' array, ma non lo conosco.
Visodont
Questo è un ordinamento manuale:
Dim nArray(10) As Integer
Dim nAux As Integer
Dim nI As Integer
Dim nJ As Integer
'array contiene valori dall'indice 1 a 10
'ordinamento bouble sort
For nI = 1 To 10 - 1
For nJ = 1 To 10 - 1
If nArray(nJ) > nArray(nJ + 1) Then
nAux = nArray(nJ)
nArray(nJ) = nArray(nJ + 1)
nArray(nJ + 1) = nAux
End If
Next
Next
Questo ordina dei numeri, devi adattarlo per il tuo progetto.
Se hai bisogno di una mano chiedi pure ;)
scusa fratello se te lo dico ma come ordinamento a bolla è fatto col cul@. :)
solo con questa versione non ottima, riduzione ad 1/5 (un quinto) del tempo di ordinamento ...
For i = 1 To II - 1
xmin = x(i): jmin = i
For j = i + 1 To II
If x(j) < xmin Then xmin = x(j): jmin = j
Next j
x(jmin) = x(i)
x(i) = xmin
Next i
Originariamente inviato da a2000
scusa fratello se te lo dico ma come ordinamento a bolla è fatto col cul@. :)
Si si lo so, ma siccome ero di fretta, avevo la tipa che mi rompeva il cazzo.. ho scritto quello che va + lento ma è il + corto :D
aaaah ste donne!! :cool:
ah, ho capito ... allora l'hai scritto col ca@zzo :D
comunque mi sembra corto uguale.
visodont
30-07-2004, 18:48
Grazie dei codici !
Mi metto subito all' opera.
Scusate se ogni tanto vi disturbo con richeste per voi elementari, ma visto che siete gentiline approfitto
Grazie ancora
Visodont
c'è un'altra soluzione che ti permette di utilizzare il sort embedded in VB: 4 righe.
interessa ?
visodont .... ma toglimi una curiosità ....
ma tra un post e l'altro ... quanti diecimila euri esentasse ti inglobi :D :confused:
thegood85
30-07-2004, 23:50
Domanda del cavolo, ma...
Io non conosco VB (cioè, l'ho usato 6 mesi a scuola, non ricordo più una mazza)
Se, invece di scrivere i numeri
1000
100
240
431
li scrivi così:
1000
0100
0240
0431
Non te li ordina a modo?
Originariamente inviato da a2000
c'è un'altra soluzione che ti permette di utilizzare il sort embedded in VB: 4 righe.
interessa ?
thegood85
31-07-2004, 10:51
Originariamente inviato da a2000
c'è un'altra soluzione che ti permette di utilizzare il sort embedded in VB: 4 righe.
interessa ?
Ma i tuoi messaggi sono sempre così criptici?
Ce la puoi passare questa tua soluzione?
visodont
31-07-2004, 16:51
Si mi interesserebbe,
se sei cosi gentile da darmi qualche dritta !
Grazie
Visodont
visodont
31-07-2004, 17:00
Caro a2000
tu scrivi : visodont .... ma toglimi una curiosità ....
ma tra un post e l'altro ... quanti diecimila euri esentasse ti inglobi ?
Beh, ho trovato il modo di estrarre soldi dalle tasche della gente in modo poco doloroso e mi ringraziano per questo.
Dal VB6 non ricavo un euro bucato ! E' solamente un hobby che mi è di qualche utilità anche nel mio lavoro.
Sono un addetto alla manutenzione di particolari impianti di triturazione, nel comparto alimentare, ma di esentasse purtroppo non se ne parla e allora visto che le devo pagare le mie manutenzioni sono ben retribuite.
Ciao,
Visodont
With Form1.ListBox1
For i = 0 To .ListCount - 1
.List(i) = Format$(Val(.List(i)), "00000") & Mid$(.List(i), InStr(.List(i), " "))
Next i
.Sort
For i = 0 To .ListCount - 1
.List(i) = Format$(Val(.List(i)), "#####") & Mid$(.List(i), InStr(.List(i), " "))
Next i
End With
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.