Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB6] Ubound array multidimensionali

    Ciao ragazzi

    Vorrei sapere se e come è possibile fare l'ubound di un array multidimensionale.
    Ad esempio abbiamo dichiarato in una sub exec_function:
    codice:
    Dim Param() As Integer
    poi in un'altra sub, alla quale passiamo byref l'array sopra dichiarato, ridimensioniamo l'array in base agli elementi presenti nel db, così ad avere ad esempio un array a 3 dimensioni.
    Quando usciamo da questa sub perdiamo i dati relativi al numero di elementi per ogni dimensione dell'array.
    Ora dobbiamo passare questo array ad un'altra sub, stavolta però byval, per stamparne il contenuto in una listbox.

    Quindi io vorrei sapere:
    All'interno della sub Print, come faccio a conoscere gli elementi presenti in ogni indice?

    Qui di seguito vi posto il codice che ho scritto, diciamo che rende l'idea di ciò che voglio fare anche se mi genera errore sull'Ubound della 2^ e 3^ dimensione dell'array:
    codice:
    Sub exec_function()
        Dim Param() As Integer
        riempi_array Param 'sub che legge i dati nel db e ridim. l'array
        Print_Result Param, 10, 3
    End sub
    
    Sub Print_Result(Param() As Variant, Elem As Integer, _
                     Dimen As Integer)
                     
        Dim e As Integer, i As Integer, j As Integer, k As Integer
        Dim cr As String
        '
        cr = ""
        Form1.Numbers.Caption = "Elementi = " & str(Elem)
        '
        For e = 0 To Elem - 1
            '
            If Dimen = 1 Then
                For i = 0 To UBound(Param) - 1
                    cr = cr & str(Param(i)) & " ** "
                Next i
            ElseIf Dimen = 2 Then
                For i = 0 To D1 - 1
                    For j = 0 To UBound(Param(i,j)) - 1
                        cr = cr & str(Param(i, j)) & " ** "
                    Next j
                Next i
            ElseIf Dimen = 3 Then
                For i = 0 To UBound(Param) - 1
                    For j = 0 To UBound(Param(i,j)) - 1
                        For k = 0 To UBound(Param(i,j,k)) - 1
                            cr = cr & str(Param(i, j, k)) & " ** "
                        Next k
                    Next j
                Next i
            End If
            '
        Next e
        '
        Form1.ListR.AddItem cr
        '
    End Sub
    Oltre tutto, il parametro che passo in input a questa sub può essere di tipo Byte, Integer o String... per questo l'ho dichiarato Variant.

    credo che il parametro Elem sia superfluo, ma per il momento non l'ho tolto chè vorrei prima sapere come risolvere il mio problema con l'array.

    Sapete aiutarmi ragazzi?

    Grazie
    lady

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Ciao ladyBlu

    la funzione UBound accetta 2 parametri:

    UBound (NomeArray, Dimensione)

    quindi se vuoi sapere l'UBound della terza dimensione del tuo array devi scrivere solo:

    UBound(Param, 3)

    in sostanza nel tuo ciclo:

    codice:
    For e = 0 To Elem - 1
            '
            If Dimen = 1 Then
                For i = 0 To UBound(Param,1) - 1
                    cr = cr & str(Param(i)) & " ** "
                Next i
            ElseIf Dimen = 2 Then
                For i = 0 To D1 - 1
                    For j = 0 To UBound(Param,2) - 1
                        cr = cr & str(Param(i, j)) & " ** "
                    Next j
                Next i
            ElseIf Dimen = 3 Then
                For i = 0 To UBound(Param,1) - 1
                    For j = 0 To UBound(Param,2) - 1
                        For k = 0 To UBound(Param,3) - 1
                            cr = cr & str(Param(i, j, k)) & " ** "
                        Next k
                    Next j
                Next i
            End If
            '
        Next e
    Boolean

  3. #3
    Originariamente inviato da Boolean
    Ciao ladyBlu

    la funzione UBound accetta 2 parametri:

    UBound (NomeArray, Dimensione)

    quindi se vuoi sapere l'UBound della terza dimensione del tuo array devi scrivere solo:

    UBound(Param, 3)

    in sostanza nel tuo ciclo:

    codice:
    ...
    Boolean
    Boolean... non la sapevo questa cosa. grazie mille funziona alla grande.


    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.