Matrice di array

di il
6 risposte

Matrice di array

Salve a tutti.
Mi trovo nella necessità di utilizzare una matrice di array. Più precisamente, devo creare una matrice bidimensionale Chords(m,n) i cui elementi siano array di 3 o 4 elementi di tipo stringa.
Non so se sia possibile. Quello che ho fatto è stato definire la matrice in questo modo:

Dim Chords(11,9) As String

e successivamente definire i singoli elementi in questo modo:

Chords(0,0) = Array("Str1", "Str2", Str3") ovvero Chords(0,5) = Array("Str4", "Str5", "Str6", "Str7")

e così via per tutti gli altri elementi. In pratica una look-up table di 120 array. Tutti i dati sono invariabili.

La cosa non ha funzionato, perché in fase di compilazione ho ricevuto l'errore "Invalid Outside Procedure".
Mi rendo conto che in questo modo non ho definito gli array ... ma non riesco a trovare il modo corretto per farlo, e non so neanche se tale modo esiste.
Ringrazio chiunque potrà aiutarmi a risolvere il problema.

6 Risposte

  • Re: Matrice di array

    Non ho chiari cosa tu voglia fare ma probabilmente dovresti usare una Type. E in ogni caso all'interno di una Sub.

    Se ci dici esattamente cosa vuoi fare si può ragionare meglio sul problema...
  • Re: Matrice di array

    Come ho detto, devo usare questa matrice di array come una look-up table, per fare il confronto con degli array in input.
    In altre parole, ogni vettore in ingresso di tre o quattro dati tipo stringa viene confrontato con quelli contenuti nella matrice, per verificare se i dati che contiene coincidono con quelli del corrispondente vettore identificato da (m,n). Tutto qui.
  • Re: Matrice di array

    Per una lookup table basta un semplice vettore.

    È per questo che ti chiedo di spiegarti meglio e fare un esempio pratico.. E poi sei sicuro di farlo in vb6 o lo stai facendo in vb.net?
  • Re: Matrice di array

    Beh, considerato che sono diplomato e laureato, e quindi penso di essere ancora in grado di saper leggere e scrivere, che su tutti i sette manuali che ho leggo "Visual Basic 6", e che il programma che uso si chiama Visual Studio 6, sono ragionevolmente sicuro di star programmando in VB6, anche se non sono un professionista.
    Quanto a quello che voglio fare, non penso di riuscire ad essere più chiaro di quanto sia già stato; ma comunque ci riprovo.
    Ho in ingresso un vettore costituito da tre (o quattro) elementi di tipo stringa, che per chi fosse molto curioso sono i nomi di note musicali, ovvero le note che formano un accordo.
    Devo confrontare questo vettore con altri 120 vettori, per verificare se quello inserito coincide con uno dei 120 identificato da una coppia di indici (m,n), e quindi sapere se la risposta data è giusta o sbagliata.
    Più chiaro di così non riesco ad essere, giuro. Lo so anche io che è "sufficiente" un vettore: in fondo, quello che voglio realizzare è un array tridimensionale, solo che invece di definire tutti i 480 elementi che lo compongono uno per uno, vorrei inserire i 120 vettori predefiniti in una matrice bidimensionale 12 x 10, visto che li ho già scritti tutti .
    Se questo non è abbastanza chiaro, mi arrendo.
  • Re: Matrice di array

    Che tu sia laureato a me non interessa. Molti si sbagliano sulla versione di VB che utilizzano anche perché programmare in VB6 oggi non ha molto senso essendo un linguaggio finito da un decennio per nuovi progetti.

    La spiegazione che ti ho chiesto è solo per darti un consiglio mirato più che si può. Quella che tu hai individuato già come soluzione magari non è la migliore. Ad esempio tre note possono essere scritte in una sola stringa e anche espresse come numeri oppure al posto degli array sarebbe meglio utilizzare delle collection. Se non hai modo di fare un esempio pratico, va bene ugualmente.
  • Re: Matrice di array

    Comunque, quello che vuoi fare si scrive così
    
    Dim Chords(11, 9) As Variant
    
    Private Sub Form_Click()
        Print Chords(0, 6)(3)
    End Sub
    
    Private Sub Form_Load()
       Chords(0, 0) = Array("Str1", "Str2", "Str3")
       Chords(0, 6) = Array("Str4", "Str5", "Str6", "Str7")
    End Sub
    
    però la ricerca potrebbe essere problematica o inefficiente. Ripeto ... dipende effettivamente da cosa vuoi fare, la soluzione potrebbe essere completamente diversa.
Devi accedere o registrarti per scrivere nel forum
6 risposte