Nel vecchio quick basic si metteva DIM SHARED PIPPO (10) AS STRING e l’array veniva condiviso.
In Xojo qual’ la maniera di mettere dim variabile (10) as tipo da qualche parte in modo da condividerne il contenuto in tutto il progetto?
(mi hanno detto di definirle in un modulo, ma in un modulo non riesco a scrivere codice, solo a definirle dall’interfaccia di xojo; preferisco, se possibile, mettere da qualche parte una sequenza di comandi DIM… possibile inserire codice, e quindi i comandi DIM in un modulo?)
Grazie
Ciao Stefano.
Definisci il tuo array come propriet in un modulo. pippo(10) as string
In questo modo hai l’array gi con 11 elementi (in Xojo gli array partono da 0)
Se devi ridimensionarlo basta che utilizzi il comando redim
Ad esempio potresti definire il tuo array come array senza elementi utilizzando la sintassi pippo() o pippo(-1)
e creare una routine, magari sempre nel modulo, che lo ridimensiona e magari lo popola e che chiami all’avvio del programma.
Se il tuo array comunque relativo ad una classe (semanticamente o per visibilit) puoi definirlo all’interno della classe non come propriet ma come shared property. La scelta dipende dalle tue necessit.
PS: Relativamente alla domanda sulle costanti.
Le costanti le puoi definire sia a livello di classe che di modulo (anche qui pi una questione semantica e/o di visibilit che vuoi ottenere)
Per scriverle devi utilizzare l’interfaccia (cosa che ti permette anche di creare costanti dinamiche, ovvero che possono cambiare il loro valore in base alla localizzazione o al sistema operativo)
Se devi scriverne tante puoi creare il file nel formato testo utilizzato per il controllo della versione e importare il file (trascinandolo sul progetto nell’IDE)
Grazie mille per la risposta.
Mi scuso per l’ulteriore domanda assolutamente da novizio: in un array tutte le colonne devono avere lo stesso tipo di dati? Ad esempio ipotizzando l’array ANAGRAFICA (100,1)
in cui nella prima colonna c’ il nome e nella seconda l’anno di nascita
esempio
ANAGRAFICA (0,0) = “ROSSI MARIO”
ANAGRAFICA (0,1) = 1960 'ANNO DI NASCITA
sono obbligato inserire l’anno di nascita come stringa cio ANAGRAFICA (0,1) = “1960” e poi eventualmente riconvertitlo in integer al momento dell’uso con la funzione VAL oppure consentito avere array “misti” in cui (immaginando un array come una tabella di dati) una colonna di un tipo di dati e un altra colonna di un altro tipo?
Ringrazio in anticipo cos non sto a inserire successivamente un post di ringraziamenti.
Dunque ho creato delle propriet, ciascuna con il nome dell’array ad esempio:
pippo() e nel campo type ho messo string
pluto() e nel campo type ho messo number
con l’idea poi successivamente di definirne la dimensione, all’interno del codice, con il comando redim
corretto?
Il problema nasce se voglio creare un array shared a due dimensioni:
se creo una propriet chiamata
topolino (,)
mi d syntax error
Qual’ il modo giusto per definire un array a 2 dimensioni topolino (x,y) che sia condiviso in tutto il codice?
Teoricamente per crearlo non condiviso basterebbe fare dim topolino (3,3) (ad esempio); ma per crearlo come propriet qual’e’ la sintassi da mettere nel campo “Name” della propriet? Grazie
Forse l’ho scoperto, devo mettere come valore -1, giusto? cio come nome topolino (-1,-1), cosi’?
Ciao Stefano.
un array a singola dimensione lo puoi definire con pippo() che una sintassi ridotta di pippo(-1)
un array a 2 dimensioni lo devi definire con pippo(-1,-1)
a questo punto se in un modulo (o shared property di una classe) disponibile a tutti
puoi anche mettere la dimensione fissa (se fissa) ad esempio pippo(2,3) as string, a questo punto avrai un array di 2x3 di stringhe vuote
In genere a meno di casi particolari ti conviene crearlo vuoto tanto lo dovrai in qualche modo inizializzare con i valori che ti interessano
Per quanto riguarda il tipo, ovviamente il tipo lo stesso per tutto l’array.
Ma se ogni riga rappresenta informazioni, diciamo di tipo uguale, per colonne, invece di una matrice non ti conviene creare una classe e un array di questa classe?
Magari poi questa classe la rappresentazione di un record di un database, per cui sar semplice creare un metodo della classe per salvare i dati sul db etc.
Ad esempio nel tuo caso potrebbe essere classe Persona con 2 propriet nome as string e annoDiNascita as integer
e poi il tuo array sar solo persone() as Persona