Difference between revisions of "EN/Documentation/BASIC Guide/Arrays"

From Apache OpenOffice Wiki
Jump to: navigation, search
 
Line 46: Line 46:
 
* Il numero massimo di elementi (all'interno di una dimensione del campo di dati) è 16368.  
 
* Il numero massimo di elementi (all'interno di una dimensione del campo di dati) è 16368.  
  
{{Documentation/Note|Per gli indici dei campi di dati in VBA si applicano talvolta limiti diversi. Lo stesso si applica anche al numero massimo di elementi possibile per ogni dimensione. }}I valori validi possono essere reperiti nella documentazione VBA pertinente.
+
{{Note|Per gli indici dei campi di dati in VBA si applicano talvolta limiti diversi. Lo stesso si applica anche al numero massimo di elementi possibile per ogni dimensione. }}I valori validi possono essere reperiti nella documentazione VBA pertinente.
  
 
==Valore specificato per l'indice iniziale==
 
==Valore specificato per l'indice iniziale==
Line 69: Line 69:
 
crea 4 variabili intere che possono essere descritte con le espressioni <tt>MyInteger(1)</tt>, <tt>MyInteger(2)</tt>, <tt>MyInteger(3)</tt> e <tt>MyInteger(4)</tt>.
 
crea 4 variabili intere che possono essere descritte con le espressioni <tt>MyInteger(1)</tt>, <tt>MyInteger(2)</tt>, <tt>MyInteger(3)</tt> e <tt>MyInteger(4)</tt>.
  
{{Documentation/Note|In {{OOo}} Basic, l'espressione <tt>Option Base 1</tt> non incide sul numero di
+
{{Note|In {{OOo}} Basic, l'espressione <tt>Option Base 1</tt> non incide sul numero di
 
elementi della matrice come in VBA. In {{OOo}} Basic è invece l'indice iniziale a
 
elementi della matrice come in VBA. In {{OOo}} Basic è invece l'indice iniziale a
 
spostarsi. Mentre la dichiarazione <tt>MyInteger(3)</tt> in VBA crea tre valori interi con gli
 
spostarsi. Mentre la dichiarazione <tt>MyInteger(3)</tt> in VBA crea tre valori interi con gli
Line 96: Line 96:
 
</source>
 
</source>
  
{{Documentation/Note|A differenza di VBA, in cui potete utilizzare solo matrici dinamiche con l'istruzione <tt>Dim MyArray()</tt>, {{OOo}} Basic permette di modificare le matrici sia statiche che dinamiche con l'istruzione <tt>ReDim</tt>.}}
+
{{Note|A differenza di VBA, in cui potete utilizzare solo matrici dinamiche con l'istruzione <tt>Dim MyArray()</tt>, {{OOo}} Basic permette di modificare le matrici sia statiche che dinamiche con l'istruzione <tt>ReDim</tt>.}}
  
 
L'esempio seguente modifica la dimensione della matrice iniziale in modo che possa registrare 11 o 21 valori:
 
L'esempio seguente modifica la dimensione della matrice iniziale in modo che possa registrare 11 o 21 valori:
Line 121: Line 121:
 
Quando usate <tt>Preserve</tt>, accertatevi che il numero di dimensioni e il tipo di variabili rimanga lo stesso.
 
Quando usate <tt>Preserve</tt>, accertatevi che il numero di dimensioni e il tipo di variabili rimanga lo stesso.
  
{{Documentation/Note|A differenza di VBA, in cui l'uso di <tt>Preserve</tt> vi permette di modificare solo il limite superiore dell'ultima dimensione del campo di dati, {{OOo}} Basic vi permette di modificare anche le altre dimensioni.}}
+
{{Note|A differenza di VBA, in cui l'uso di <tt>Preserve</tt> vi permette di modificare solo il limite superiore dell'ultima dimensione del campo di dati, {{OOo}} Basic vi permette di modificare anche le altre dimensioni.}}
  
 
Se utilizzate <tt>ReDim</tt> con <tt>Preserve</tt>, dovete utilizzare lo stesso tipo di dati specificato nella dichiarazione del campo di dati originale.
 
Se utilizzate <tt>ReDim</tt> con <tt>Preserve</tt>, dovete utilizzare lo stesso tipo di dati specificato nella dichiarazione del campo di dati originale.

Latest revision as of 14:44, 6 July 2018

Template:EN/Documentation/BASICGuideTOC/v2

Oltre alle variabili semplici (scalari), Apache OpenOffice Basic supporta anche i campi di dati (matrici). Un campo di dati contiene diverse variabili identificate con un indice.

Matrici semplici

Una dichiarazione di matrice è simile a quella di una variabile semplice ma, a differenza di questa, il nome della matrice è seguito da parentesi che contengono le specifiche del numero di elementi. L'espressione

Dim MyArray(3)

dichiara una matrice con quattro variabili del tipo variante, ossia MyArray(0), MyArray(1), MyArray(2) e MyArray(3).

In una matrice potete dichiarare anche variabili di tipo specifico. La riga seguente, ad esempio, dichiara una matrice con quattro variabili intere:

Dim MyInteger(3) As Integer

In questi esempi, l'indice per la matrice inizia sempre con valore iniziale standard di zero. In alternativa, per la dichiarazione del campo di dati potete specificare un intervallo di validità con valori iniziali e finali. L'esempio seguente dichiara un campo di dati con sei valori interi e indirizzabile utilizzando gli indici da 5 a 10:

Dim MyInteger(5 To 10)

Gli indici non devono essere necessariamente valori positivi. L'esempio seguente mostra una dichiarazione corretta, ma con limiti dei campi di dati negativi:

Dim MyInteger(-10 To -5)

L'esempio dichiara un campo di dati intero con 6 valori che possono essere identificati utilizzando gli indici da -10 a -5.

Per la definizione degli indici dei campi di dati dovete osservare tre limiti:

  • L'indice più piccolo possibile è -32768.
  • L'indice più grande possibile è 32767.
  • Il numero massimo di elementi (all'interno di una dimensione del campo di dati) è 16368.
Documentation note.png Per gli indici dei campi di dati in VBA si applicano talvolta limiti diversi. Lo stesso si applica anche al numero massimo di elementi possibile per ogni dimensione.
I valori validi possono essere reperiti nella documentazione VBA pertinente.

Valore specificato per l'indice iniziale

L'indice iniziale di un campo di dati inizia generalmente con il valore 0. In alternativa, è possibile modificare l'indice iniziale per tutte le dichiarazioni dei campi di dati sul valore 1 utilizzando la chiamata:

Option Base 1

La chiamata deve essere inclusa nell'intestazione di un modulo se si desidera applicarla a tutte le dichiarazioni di matrice del modulo. Tuttavia, questa chiamata non incide sulle sequenze UNO definite tramite l'API di Apache OpenOffice il cui indice inizia sempre con 0. Per maggiore chiarezza, evitare l'uso di Option Base 1.

Il numero di elementi della matrice non è influenzato dall'uso di Option Base 1; viene modificato solo l'indice iniziale. La dichiarazione

Option Base 1
' ...
Dim MyInteger(3)

crea 4 variabili intere che possono essere descritte con le espressioni MyInteger(1), MyInteger(2), MyInteger(3) e MyInteger(4).

Documentation note.png In Apache OpenOffice Basic, l'espressione Option Base 1 non incide sul numero di

elementi della matrice come in VBA. In Apache OpenOffice Basic è invece l'indice iniziale a spostarsi. Mentre la dichiarazione MyInteger(3) in VBA crea tre valori interi con gli indici da 1 a 3, la stessa dichiarazione in Apache OpenOffice crea quattro valori interi con gli indici da 1 a 4. Usando Option Compatible, Apache OpenOffice Basic si comporta come VBA.

Campi di dati a più dimensioni

Oltre ai campi di dati a una dimensione, Apache OpenOffice Basic supporta anche i campi di dati a più dimensioni. Le dimensioni corrispondenti sono separate per mezzo di virgole. L'esempio

Dim MyIntArray(5, 5)

definisce una matrice intera con due dimensioni, ciascuna con 6 indici (possono essere identificati con gli indici da 0 a 5). L'intera matrice può registrare un totale di 6 x 6 = 36 valori interi.

Sebbene sia possibile definire centinaia di dimensioni nelle matrici di Apache OpenOffice Basic, la quantità di memoria disponibile limita il numero di dimensioni possibili.

Modifiche dinamiche nelle dimensioni dei campi di dati

Gli esempi precedenti sono basati sui campi di dati con una dimensione specificata. Potete però definire anche matrici in cui la dimensione dei campi di dati varia dinamicamente. Ad esempio, potete definire una matrice per contenere tutte le parole di un testo che iniziano con la lettera A. Poiché il numero di queste parole è inizialmente sconosciuto, dovete essere in grado di modificare successivamente i limiti del campo. Per procedere in tal senso in Apache OpenOffice Basic, utilizzate la chiamata seguente:

ReDim MyArray(10)
Documentation note.png A differenza di VBA, in cui potete utilizzare solo matrici dinamiche con l'istruzione Dim MyArray(), Apache OpenOffice Basic permette di modificare le matrici sia statiche che dinamiche con l'istruzione ReDim.

L'esempio seguente modifica la dimensione della matrice iniziale in modo che possa registrare 11 o 21 valori:

Dim MyArray(4) As Integer ' Declaration with five elements 
' ...
ReDim MyArray(10) As Integer ' Increase to 11 elements
' ... 
ReDim MyArray(20) As Integer ' Increase to 21 elements

Quando ripristinate le dimensioni di una matrice, potete utilizzare una qualsiasi delle opzioni descritte nelle sezioni precedenti. Questo include la dichiarazione di campi di dati a più dimensioni e l'indicazione di valori iniziali e finali espliciti. Modificando le dimensioni del campo di dati, tutti i contenuti vanno persi. Per conservare i valori originali, avvaletevi del comando Preserve:

Dim MyArray(10) As Integer ' Defining the initial 
' dimensions
' ... 
ReDim Preserve MyArray(20) As Integer ' Increase in 
' data field, while
' retaining content

Quando usate Preserve, accertatevi che il numero di dimensioni e il tipo di variabili rimanga lo stesso.

Documentation note.png A differenza di VBA, in cui l'uso di Preserve vi permette di modificare solo il limite superiore dell'ultima dimensione del campo di dati, Apache OpenOffice Basic vi permette di modificare anche le altre dimensioni.

Se utilizzate ReDim con Preserve, dovete utilizzare lo stesso tipo di dati specificato nella dichiarazione del campo di dati originale.

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools