Autore Topic: creare array illimitati come si fà?  (Letto 2251 volte)

Offline Raffa50

  • Grande Gambero
  • ***
  • Post: 101
    • Mostra profilo
creare array illimitati come si fà?
« il: 25 Novembre 2011, 15:30:35 »
come si fa a creare array illimitati?
x ora stò usando un array di 5000 elementi

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #1 il: 25 Novembre 2011, 21:27:51 »
non può esistere un array illimitato, come tuto esiste un qualcos ache pone un limit efosse anche solo l aquantità di memoria della macchina!

cosa intendi per array illimitato?

se non ricordo male sopra un certo valore non puoi assegnare direttamente gli elementi ad un arrai tipo array=[1,2,3,4.... ecc]
ma devi usare degli insert per aumentarne la capacità oltre quel valore

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #2 il: 25 Novembre 2011, 21:37:40 »
Forse intende che al posto di dichiarare, ad esempio, un array di valori integer in questo modo:

Dim aInt As New Integer[10]

dichiararlo cosi':

Dim aInt As new Integer[]

senza appunto dichiararne il numero di 'elementi'...  :-\

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #3 il: 25 Novembre 2011, 22:33:53 »
la dichiarazione di un array, direi di ampiezza indefinita, piuttosto che illimitato, viene accettata da Gambas anche con
Codice: [Seleziona]
PRIVATE $ArrayStri AS String[] 

la sua popolazione avviene con
Codice: [Seleziona]
ArrayStri.add($Valore1)
ArrayStri.add($Valore2)
......................................
ArrayStri.add($Valore99999)

 :ciao:
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #4 il: 26 Novembre 2011, 01:24:28 »
la dichiarazione di un array, direi di ampiezza indefinita, piuttosto che illimitato, viene accettata da Gambas anche con

Un'ampiezza indefinita sposta i limiti del finito sempre un po' oltre sino a sfiorare l'illimitato.  :rolleyes:
« Ultima modifica: 26 Novembre 2011, 01:26:46 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #5 il: 26 Novembre 2011, 15:31:29 »
Un'ampiezza indefinita sposta i limiti del finito sempre un po' oltre sino a sfiorare l'illimitato.  :rolleyes:

Il termine illimitato, relativamente agli array, è per me assolutamente nuovo; infatti fino ad oggi non  l'avevo mai incontrato. Però se ci rifletti un po su, ti accorgi che in effetti un limite esiste ed è dato dallo spazio occupato in RAM dal programma con tutte le sue costanti e variabili. É anche vero che, in mancanza di spazio, ci pensa il kernel a racimolare spazio utilizzando segmenti di memoria esterna attraverso la tecnica del paging, però ciò determina l'inesorabile appensantimento nell'esecuzione del programma. Comunque, a parte le disquisizioni filosofiche su illimitato/indefinito, dichiarando un array così come ti ha suggerito Milio o come ti ho segnalato io, dalla mia esperienza pratica, potrai raggiungere tranquillamente il tuo obiettivo.
Ma, scusa, quanto mai potrebbe ingigantirsi l'array che vorresti utilizzare?

Attenzione però, perchè se il tuo array dovesse contenere più di una cella per ciascuna riga, la sua dichiarazione, così come ti è stata suggerita, non va più bene; occorre necessariamente dichiararne l'estensione:
Citazione
Codice: [Seleziona]
DIM $ArrayStri AS String[nn,k]
dove nn= numero massimo delle righe componenti;
         k = numero delle celle interne a ciascuna riga.

Spero che sia chiaro, tuttavia, qualora occorresse possiamo addentrarci ancora nell'esempio.
 ;)  :ciao: :ciao:


:ciao:

Offline Raffa50

  • Grande Gambero
  • ***
  • Post: 101
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #6 il: 26 Novembre 2011, 18:31:11 »
è un array a una dimensione a cui viene assegnato un oggetto!

Codice: [Seleziona]
miorarray[indice] = New nomeclasse
mioarray[indice].attributo = "valore"

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #7 il: 26 Novembre 2011, 20:36:52 »
nel tuo caso quindi avrai un array di oggetti che devi dichiarare con:

pippo=new object[]

e riempirai con un oggetto cosi:

pippo.add(oggetto)

oppure così:

pippo=[oggetto1,oggetto2] ecc

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #8 il: 27 Novembre 2011, 11:32:55 »
Non sò se il team ha imposto limiti, ad ogni modo il limite è il valore massimo che può assumere un Integer.
Infatti, gli array vengono indicizzati tramite Integer, per cui...

Offline Raffa50

  • Grande Gambero
  • ***
  • Post: 101
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #9 il: 27 Novembre 2011, 11:57:01 »
nn credo di aver capito...

devo dichiararlo: 
Codice: [Seleziona]
Private mioarray As New classe[]
Private utente As classe

Codice: [Seleziona]
utente = New classe
utente.atr1 = "valore"
mioarray.add(utente)

esatto? e come recupero il valore?

ps: mi pare complicato, non si può fare il redim con in vb6??

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #10 il: 27 Novembre 2011, 20:30:57 »
poniamo che tu hai una claase utente congli attributi nome e cognome

dichiari prima una variabile array di tipo oggetto

public myarray as new object[]


istanzi alcune classi nuova classe:

objtmp=new utente(sergio,rossi)
myarray.add(objtmp)

objtmp=new utente(filippo,verdi)
myarray.add(objtmp)

li richiami con

print utente[0].nome 
 > sergio

print utente[1].cognome
>verdi

questo è un modo per realizzare un array di oggetti

ps: gamgas non è un clone di vb , non puoi pretendere che ciò che scrivevi in vb sia ugual eper gambas



Offline Raffa50

  • Grande Gambero
  • ***
  • Post: 101
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #11 il: 28 Novembre 2011, 14:15:21 »
ok funge e se volessi editare un attributo di un elmento ke si trova a una certa posizione?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: creare array illimitati come si fà?
« Risposta #12 il: 28 Novembre 2011, 14:22:33 »
se hai l' indice dell' oggetto di cui devi editare l' attributo darai

myarray[indice].attributo=valore.

oppure all' interno della classe ti puoi creare un funzione che imposta il valore per cui avrai:

myarray[indice].impostaattributo1(valore)