Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: carletto66 - 15 Agosto 2009, 16:17:19

Titolo: [RISOLTO]Array e Matrici Globali
Inserito da: carletto66 - 15 Agosto 2009, 16:17:19
salve,

ho un altro problemino che mi assilla. Devo poter dichiarare una matrice di [n, m] elementi che deve essere utilizzata per elaborazioni da tutti i form del mio programma ma, se la dichiaro come PUBLIC nel FMain mi si presenta l'errore "L'array dichiarato non è permesso qua".

Il problema è che se la dichiaro come STATIC non è accessibile dagli altri form e allora che fare?

Grazie per l'aiuto e buon Ferragosto a Tutti!
Titolo: Re: Array e Matrici Globali
Inserito da: Berserker79 - 15 Agosto 2009, 19:48:27
Ciao, ho dichiarato l'array nel campo delle dichiarazioni del form principale e non mi ha dato nessun errore
Codice: [Seleziona]
' Gambas class file
 Public xarray As New String[5, 6]

Forse sbagli posto dove dichiararlo. Ciao.
Titolo: Re: Array e Matrici Globali
Inserito da: carletto66 - 16 Agosto 2009, 13:30:45
ciao, adesso funziona.....scartabellando nel manuale in inglese (una faticaccia!) ho risolto utilizzando la dichiarazione Public mioarray As New String[100, 6].

Il mio errore infatti era di dichiarare come PUBLIC mioarray[100, 6] AS STRING.
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 09 Dicembre 2011, 16:58:52
Eccomi!
Allora, io non riesco a usare un array multidimensionale:

Citazione
PUBLIC DatabaseStazioni As New String[20,20]


Public sub GenerateDatabase()
   DatabaseStazioni[1,1] = "gigi"

Mi mette "Bad number of dimensions"
Dove sbaglio?
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: fsurfing - 09 Dicembre 2011, 18:02:38
io invece di usar eun array multidimensionale utilizzerei una classe

percui avresti un array di oggetti(la classe) con le varie proprietà

è molto più comodo da gestire e utilizzare.

comunque il codice che hai scritto è corretto.

tieni conto che gli indici iniziano da 0 percui nel caso di New String[20,20]

il primo campo è [0,0]

l' ultimo + [19,19]

ps che versione di gambas usi? io ho provato sulla 2.22
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 09 Dicembre 2011, 18:43:05
Guarda, io sono alle prime armi; prima di smanettare con cose (classi) che non conosco preferirei vedere se quel poco che so funziona......

Comunque, io ho un 2.21

Ma io devo necessariamente cominciare dall'indice 0,0 per riempire un array?
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: Ceskho - 09 Dicembre 2011, 18:47:38
Ma io devo necessariamente cominciare dall'indice 0,0 per riempire un array?

Si...poi tutta la gestione la adegui di conseguenza. In ogni linguaggio di programmazione, in modo basilare, trovi sempre questa situazione.
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 16 Dicembre 2011, 11:57:38
Codice: [Seleziona]
' Gambas class file
AckToClient AS Byte[10] ' buffer di risposta al client
PUBLIC DatabaseStazioni AS NEW String[20, 20] 'MaxStations, MaxDatabaseHeaders]
PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
 DIM directoryName AS String
  DIM tir AS Integer[7, 5]
  DIM iK[9] AS Integer ' ik[0] to ik[8]


  tir[0, 0] = 7
  iK[0] = 7
  DatabaseStazioni[0, 0] = "titti"

END

Allora, nel debug mi salta fuori:
Citazione
tir (Integer[]) = "Bad number of dimensions" da 0 a 6, "Out of bounds" da 7 in poi
iK mi compare l'errore "Type mismatch: wanted Variant, got array instead"

Mi sa che quasi quasi torno a Windows.....  :)
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: fsurfing - 16 Dicembre 2011, 12:12:04
il continuo a non capire perchè ti ostini ad usare una matrice, quando hai a disposizione strumenti molto piu efficaci e comodi, partendo dall' uso di due semplici array , oppure una collection oppure una classe.
Credo che quasi mai nessuno abbia usato una matrice che è probabilmente un sistema valido in altri linguaggi ma a mio parere non in gambas
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 16 Dicembre 2011, 15:32:35
Ok, allora potresti indicarmi dove trovare degli esempi di matrici fatti con le classi?
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: fsurfing - 16 Dicembre 2011, 17:04:21
tu  spiega cosa volevi fare con la matrice e vediamo di trovare una soluzione
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 16 Dicembre 2011, 17:26:01
Allora, io ho una serie di cartelle all'interno di una directory (x. es. "Stazione_01", "Stazione_02", e così via), per un massimo di 40 stazioni; ogni directory contiene diversi files di configurazione (x. es. "IP.cfg", "DNS.cfg", ID.cfg", e così via), per un massimo di circa 20 files (abbondo).
Quindi lo facevo con un array di "objects" di dimensioni 40x20, i cui elementi erano di tipo "string", "integer", "IP", etc. etc.
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: fsurfing - 16 Dicembre 2011, 17:54:28
ma i file di configurazione li hai creati tu? a occhio direi di si, quindi per ogni proprietà della stazione nel file di configurazione hai un solo valore .

sappi che per salvare i dati delle stazione hai a disposizione strumenti migliori id questo sistema, prima di tutti un semplice database o in alternativa potresti usare settings che si occupa appunto di creare file di configurazione , in questo modo potresti salvare i dati di tutte le stazioni in un unico file.

comunque rimanendo al tuo sistema:

qui ti ho fatto un esempio semplicistico
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 17 Dicembre 2011, 16:15:23
Ok, grazie, intanto cerco di studiarmelo u npo'..... :D
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 17 Gennaio 2012, 11:36:39
Mi sono accorto oggi di una cosa: se creo questa classe (l'avevo fatta per prova)

TelemetryData class
Codice: [Seleziona]
PUBLIC Id As Byte
PUBLIC StatusReg As Short

Poi la utilizzo in questo modo all'interno di una SUB:
Codice: [Seleziona]
DIM MioDato As TelemetryData
MioDato = New TelemetryData

Solo che così non è una variabile globale, non me la vede se chiamo un'altra sub; come posso risolvere?
Ho provato a dichiararla coma variabile globale, ma non funziona....
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: fsurfing - 17 Gennaio 2012, 19:01:07
non è globale perchè mio dato l' hai dichiarato all' interno della sub, dovresti dichiararlo come pubblico
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 30 Gennaio 2012, 12:01:45
qui ti ho fatto un esempio semplicistico

Mi stavo chiedendo: visto che ad un certo punto c'è obj.add(stringa), perchè se ogni volta cambio la stringa, obj mi viene visto solo come un array di oggetti?
Nel senso, se utilizzo una sola volta obj.add("pippo") dovrei vedere obj come un array a 1 elemento che si chiama "pippo", o no?
Invece mi ritrovo obj come un array di "miaclasse".....
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: fsurfing - 30 Gennaio 2012, 12:06:59
questo dipende da cosa hai scritto nel codice del tuo progetto

se obj è un array di stringhe avrai un array di stringhe

se obj l' hai dichiarato come array di oggetti avrai un array di oggetti
Titolo: Re: [RISOLTO]Array e Matrici Globali
Inserito da: El Berto - 30 Gennaio 2012, 12:12:01
obj l'ho dichiarato come array di oggetti, dove lo riempio con una variabile (classe) personalizzata, quindi obj[2] è una variabile personalizzata.
Tuttavia, visto che lo utilizzavo nel modo obj.add(miastringa) all'interno di un ciclo supponevo di poterlo individuare anche attraverso la stringa miastringa....
Vabbè, grazie.