Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: luca1202 - 29 Luglio 2010, 14:33:57

Titolo: [RISOLTO]allocare dinamicamente un vettore di stringhe
Inserito da: luca1202 - 29 Luglio 2010, 14:33:57
avrei la necessità di creare 2 vettori di stringhe solo che le dimensioni non volevo specificare a priori ma volevo che ogni elemento fosse allocato solo in caso di reale necessità al fine ovviamente di evitare inutili sprechi di risorse.

il problema è che non sò come farlo, in C basterebbe fare una malloc dell'elemento i-esimo del vettore ma qua?
ho provato a cercare un pò in giro per la rete ma non ho trovato niente; forse non sò che parole usare per cercarlo.
Titolo: Re: allocare dinamicamente un vettore di stringhe
Inserito da: doublemm - 29 Luglio 2010, 14:42:51
in teoria con
Codice: gambas [Seleziona]

DIM tuoarray AS STRING[]


dichiari un array senza una lunghezza specifica.
Titolo: Re: allocare dinamicamente un vettore di stringhe
Inserito da: md9327 - 29 Luglio 2010, 14:49:08
Se dai un'occhiata alla doc ufficiale, l'oggetto String[] è trattato alla stessa maniera di tutti gli altri oggetti array (o vettore), con i propri e appositi metodi per gestirne il contenuto.
Diversamente da C, Gambas e in genere gli altri linguaggi gestiscono tutto dinamicamente. Anche in C++ puoi usare l'oggetto String, che si comporta allo stesso modo. Ormai le funzioni alloc/malloc vengono usate solo in caso di maggior controllo del codice e delle informazioni trattate, in particolare si programmi real-time, tenendo conto che gli oggetti e la loro gestione sono molto pesanti e più laboriose, e ovviamente più voraci in termini di risorse e di tempi di elaborazione.
Titolo: Re: allocare dinamicamente un vettore di stringhe
Inserito da: luca1202 - 29 Luglio 2010, 14:58:38
ora ho capito!!
mi sfuggiva il fatto che String[] fosse un oggetto :-[

effettivamente se dichiaro
Codice: [Seleziona]
DIM s as String[]
per aggiungere elementi è sufficiente usare il metodo messo a disposizione dall'oggetto, quindi
Codice: [Seleziona]
s.Add(string,index)

questa spiegazione mi è stata veramente utile!! grazie :2birre: