...voglio creare un array di 3 elementi di interi con i seguenti indici i[3], i[40] e i[100] senza dover dimensionare un intero di 101 elementiL'indice è legato al numero di elementi.
In pratica ho una discreta quantità di numeri, senza alcuna logica, cui devo assegnare un valore, e la soluzione ideale sarebbe appunto un array che copra l'intero range dal più piccolo al più grande. Volendo cimentarmi in una finezza (per così dire di non sprecare memoria) avevo valutato la versatilità della collection che si presta bene a tale scopo. Ma mi sono imbattuto nel limite di non poter allocare dinamicamente un intero. Non posso scrivere DIM I AS NEW INTEGER e stoccare poi tale I nella collection con Add. Per ottenere questo risultato sono costretto a dichiarare un array di interi di un solo elemento, ossia DIM I AS NEW INTEGER[1]. Mi chiedevo quindi se vi fosse una scappatoia a questo limite...
Ciao, Giovanni
In pratica ho...Perdonami, ma io, pur rileggendo i tuoi due interventi, non ho ben capito quello che vorresti fare. :-\
Se ho capito, vorrebbe usare un array di 3 elementi con il primo elemento in posizione 3, il secondo in posizione 40 e il terzo in posizione 100, ma senza nessun elemento in mezzo a loro. Poi aggiungere nuovi elementi tra di loro nelle posizioni libere. Ho capito bene?
Public Sub Main()
Dim bb As Byte[] = [10, 11, 12, 13, 14, 15, 16]
Print bb.Count, bb[3]
' Eliminiamo l'elemento di indice 3, ossia il 4° elemento:
bb.Remove(3, 1)
Print bb.Count, bb[3]
End
Public Sub Main()
Dim bb As Byte[] = [10, 11,, 13,, 15, 16]
End
... il computer manco se ne accorge di 100 byte in più o in meno.Da aggiungere anche che lui potrebbe, tenendo conto del valore numerico più alto previsto assegnabile, giostrare con un tipo di variabile a bassa occupazione di memoria (byte, short), anziché per forza gli Interi (Integer). :-\
vi è un modo di istanziare un semplice integer senza tirare in ballo una classe od un array?
Ma tu l'intero da inserire nella collection lo conosci già o lo devi, in qualche modo, calcolare?
Il programma all'avvio deve riservare lo spazio di memoria per stoccare gli interi che via via arriveranno durante l'esecuzione dello stesso. In pratica legge le temperature di un parco serbatoi ed in base al numero dello stesso va a registrarla nella relativa posizione della collection. Siccome tali silos hanno una numerazione creata ad hoc dal cliente (ma univoca) può capitare il caso che il numero di tale silos sia composto da un codice piuttosto lungo (ad esempio 3 cifre che identificano la provincia, 2 cifre per l'impianto e 3 cifre per il numero specifico del serbatoio).Benissimo. Ora il concetto è un pò più chiaro. Servirebbe sapere ancora una cosa: il parco serbatoi è riferito ad un solo cliente o può comprende i serbatoi di tutta la clientela? Se gestisci un cliente alla volta la soluzione è ovviamente più semplice.
Da quello che leggo nella guida come chiave si possono usare solo stringhe, mentre come valore solo variant. Quindi niente interi, mi sa.