Autore Topic: [Risolto]Riordino di un array a 2 dimensioni  (Letto 745 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
[Risolto]Riordino di un array a 2 dimensioni
« il: 29 Settembre 2010, 15:56:01 »
Da ieri sera sto cercando una soluzione per comandare il sort automatico di un array a 2 dimensioni, affidando al sort, come colonna contenente la chiave di ordinamento,  la 2^ dimensione.
L'array mi serve infatti per scambiare il contenuto di una riga di una ListBox.List con quello ottenuto dalla digitazione di una nuova data e ricaricarlo ex novo dopo averne riordinato gli elementi.
La ListBox.List contiene un elenco di date nel formato gg-MeseInChiaro-aaaa, per cui, dovendo ordinare le date per aaaaMMgg, non posso sfruttare la proprietà sort della ListBox.
Ho pensato di utilizzare per detto scopo un array, così definito:
Codice: gambas [Seleziona]
DIM $_TbGGAp AS Array
i_Max = ListGGAp.Count - 1
$_TbGGAp = NEW String[i_Max + 1, 2]
'......seguono le istruzioni di caricamento
'...poi:
$_TbGGAp.sort[ ???]


Naturalmente, l'istruzione relativa al sort non può funzionare, perché non saprei come indicare il riferimento alla dimensione da fargli utilizzare come "order by".
 :-\ ??? :-\

Ciao.
« Ultima modifica: 01 Ottobre 2010, 12:06:51 da Picavbg »
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Riordino di un array a 2 dimensioni
« Risposta #1 il: 29 Settembre 2010, 17:50:54 »
Quello che dici è vero, devi sortare per aaammgg...

Io direi che potresti farti una piccola routine che prende i singoli elementi, li splitta nei vari sottoelementi della data, e li ricompone in una stringa di tal fatta, indi per cui sorti l'array finale...

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Riordino di un array a 2 dimensioni
« Risposta #2 il: 29 Settembre 2010, 22:06:18 »
Quello che dici è vero, devi sortare per aaammgg...

Io direi che potresti farti una piccola routine che prende i singoli elementi, li splitta nei vari sottoelementi della data, e li ricompone in una stringa di tal fatta, indi per cui sorti l'array finale...
Prima di scrivere avevo pensato ad una soluzione:
Dichiaro un array con:
1) DIM $_TbGGAp as NEW String[]
2) dove carico, per ciascun elemento, una stringa nella quale antepongo una data numerica nel formato aaaaMMgg, a cui faccio seguire la corrispondente data da editare nella ListBox.List, aaaa-MeseInChiaro-gg, cioé:
aaaaMMggaaaa-MeseInChiaro-gg;
3) a fine caricamento eseguo il sort col comando:
    $_TbGGAp.sort
4) ottengo così una disposizione nell'array delle date,  in ordine crescente di data
6) cancello il vecchio contenuto della ListBox.List
5) trasferisco il contenuto dell'array nella ListBox.List, trascurando per ciascun elemento di $_TbGGAp i primi 8 crt (aaaaMMgg).
6) ottenendo infine una ListBox.List rinnovata ed ordinata per data  crescente.

Speravo però che esistesse un metodo di ordinamento automatico parametrato per array multidimensionali.

La tua risposta mi da conferma che non esiste un metodo del genere a quello sperato. La mia soluzione é diversa da quella che mi suggerisci tu, ma mi pare più a portata di mano rispetto al metodo split.

Perciò, salvo ulteriori tue diverse indicazioni, procederei come ho appena esposto. :D
 :(
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Riordino di un array a 2 dimensioni
« Risposta #3 il: 30 Settembre 2010, 12:04:44 »
La tua soluzione è un'alternativa, che sia diversa dalla mia è logico in quanto è un altro punto di vista.
La differenza tra le due nostre opzione, è che la mia usa totalmente codice, la tua si basa sui dati, tutto qui, ma vanno bene entrambe.

Non capisco però il perchè cercavi metodi per array multidimensionali... nel tuo caso servono a poco, e complicano di molto la cosa.

Se, per caso, questa funzionalità viene richiesta da altre parti del programma, il mio consiglio è di farne una bella funzioncina che, con i giusti parametri, ti sorta quello che vuoi, e ti ritorna una lista bella ordinata... pensaci...

In alcune parti dei miei progetti, io lavoro con gli array, utilizzando String[], in cui metto per ogni riga un certo numero di elementi, che separo con un determinato carattere. Mettendo i parametri nella giusta sequenza, il sort è abbastanza facile. Ad ogni modo ho creato una routine che, in base al carattere separatore, mi sorta qualsiasi tipo di lista, passandogli il numero di colonna da sortare. Dopodiche, mi basta fare un loop sull'array, prendendo la colonna interessata, e popolando la ListBox o la Combo. Diciamo che utilizza i nostri due sistemi che ci siamo detti.
Per esempio, con l'oggetto TreeList, per poter capire quale elemento stò puntando, e a quale oggetto corrisponde, io associo ogni elemento ad una chiave (key), composta da un certo numero di elementi (convertiti ovviamente in stringa), separati dall'undercose, ovvero gli id stessi degli oggetti associati. Indi per cui, mi basta estrarre il codice dalla chiave, splittando opportunamente la chiave tramite il carattere underscore, e prendere l'elemento corrispondente, indi per cui ancora andare a cercarmi l'oggetto corrispondente.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Riordino di un array a 2 dimensioni
« Risposta #4 il: 30 Settembre 2010, 15:05:37 »
Carissimo md..., )scusa se mi permetto di omettere la parte numerica, ma md mi sembra più confidenziale, semprecché tu sia concorde) come certamente ammetterai, un qualsiasi disegno viene messo pratica da ciascuno di noi, in funzione della propria esperienza e della propria conoscenza. Esse sono due variabili del nostro sistema intellettivo che si rincorrono e si arricchiscono giorno dopo giorno, con lo studio, la pratica, la verifica e la contniua analisi su quanto si é fatto e vissuto. A tutto ciò si aggiunge un'altra piccola variabile, impercettibile, ma che molto spesso fa da regolatore sul nostro modo di costruire gli strumenti di cui avremo bisogno: é l'unità di misura della convenienza.
Quello che tu dici sulla funzione da potere utilizzare per qualsiasi necessità simile futura é senza dubbio comodo, però, innanzitutto non ci avevo pensato, inoltre devo dire che in questo momento non so se mi potrà servire. Ti ringrazio comunque per il saggio consiglio.
L'importante é andare avanti e crescere in conoscenza ed esperienza!  ;D
Ciao.
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: [Risolto]Riordino di un array a 2 dimensioni
« Risposta #5 il: 01 Ottobre 2010, 17:29:54 »
Ho capito male, o te la sei presa per il mio discorso? Non era certamente mia intenzione...  :-\

Quello che ho suggerito, anche se magari non fattibile oggi, potrà essere creato in futuro, la mia era appunto un'idea, accompagnata da un esempio già fatto e funzionante...  :-\

Riguardo all'ultima frase, è giusta e corretta!!!  :ok:


Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: [Risolto]Riordino di un array a 2 dimensioni
« Risposta #6 il: 01 Ottobre 2010, 22:49:00 »
Ho capito male, o te la sei presa per il mio discorso? Non era certamente mia intenzione...  :-\

Quello che ho suggerito, anche se magari non fattibile oggi, potrà essere creato in futuro, la mia era appunto un'idea, accompagnata da un esempio già fatto e funzionante...  :-\

Riguardo all'ultima frase, è giusta e corretta!!!  :ok:

Io, prendermela? E perché avrei dovuto? Assolutamente no; tutti i consigli sono buoni e tutte le idee vanno apprezzate. Il metterle in pratica dipende dal proprio gusto a dal risultato che si vuole ottenere, nonché del tempo occorrente.
Ho solamente espresso un mio pensiero, ma se ti ho dato l'impressione di non avere gradito, me ne dispiace e mi scuso per essere stato infelice nell'esprimermi.  :)
Ciao.
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: [Risolto]Riordino di un array a 2 dimensioni
« Risposta #7 il: 03 Ottobre 2010, 13:22:15 »
No, era stata solo una mia impressione, chiuso qui...  :2birre:

A volte, potrei sembrare un pò troppo brusco, e magari dare la sensazione di montare in cattedra, ma sicuramente non è mia intenzione, non sono un guru informatico, ma uno dei tanti che sperimenta, ma alle spalle ho qualche annetto di esperienza, per cui a volte...  :-\