Autore Topic: utilizzo dei moduli  (Letto 1246 volte)

Offline melchisedec

  • Gamberetto
  • *
  • Post: 29
    • Mostra profilo
utilizzo dei moduli
« il: 21 Luglio 2008, 22:02:37 »
ciao a tutti ...il mio progetto e costituito da una decina di form che a seconda degli eventi vanno a chiamere delle funzoni pubbliche e comuni a tutti che ho scritto e dichiarato in un modulo....ho la necessità di dichiarare anche un array bidimensionale che è comune a più funzioni ma se scrivo in questo modo

PUBLIC Array[a,b] as short  '''mi dice che è probito

PUBLIC Array[a,b] as global  '''mi dice che è probito

STATIC Array[a,b] as short  '''mi dice che non deve comparire STATIC

PUBLIC Array as short[]  '''quando chiamo la funzione che lo contiene si incarta dicndo null object

Come posso fare?Qalche idea?

Grazie da ora

g.paolo

  • Visitatore
Re: utilizzo dei moduli
« Risposta #1 il: 22 Luglio 2008, 09:56:11 »
E' proprio indispensabile usare l'array?
In casi come il tuo preferisco memorizzare tutto quello che mi serve in un file di testo ed usare la scrittura e lettura sequenziali.
In termini di velocità non è che richieda un granchè di tempo in più, e risparmio la memoria.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: utilizzo dei moduli
« Risposta #2 il: 22 Luglio 2008, 10:05:00 »
PUBLIC MyArray AS Short[10, 10]

ciao

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: utilizzo dei moduli
« Risposta #3 il: 22 Luglio 2008, 11:00:18 »
Ricordo che la dichiarazione in se stessa non crea effettivamente l'oggetto o la variabile in memoria. L'effettiva allocazione deve essere fatta con NEW, per quanto riguarda gli array e gli oggetti, mentre per le variabili di base (es. Integer) questo non è necessario, anche se è opportuno impostare un valore di default, onde evitare di trovarsi inizialmente con una variabile settata a caso.

Tutto questo è valido, sia per quanto riguarda i moduli (che ricordo in Gambas sono in pratica degli oggetti statici, ma sempre oggetti), sia per gli oggetti e classi in generale. Il fatto è che con le classi hai appositi metodi per l'inizializzazione (vedi _new() o il Form_Open()), mentre per i moduli non ci sono; questo comporta la necessità di creare una logica di inizializzazione delle variabili (sia globali che private), altrimenti si corre il rischi di perder il controllo sull'applicazione.

Riguardo all'utilizzo massivo di moduli e di variabili publiche globali, ho sempre molti dubbi, causati dal fatto che sono sempre di difficile controllo (dato che sono accedute da tutti), e poi indicano la difficoltà di impostare una logica più orientata agli oggetti, come è in gambas.
Il mio consiglio è di capire bene cosa si vuol fare, onde evitare poi di imbattersi in gravi problemi di funzionalità e lettura dei codice, che diventano difficilmente recuperabili, e spesso comportano la completa ristrutturazione e riscrittura di un'intera applicazione.

Perdonatemi, non volevo fare il maestro, ma dato che siamo qui per imparare tutti, io compreso, mi pareva giusto cercare di contribuire alla conoscenza di questo bel linguaggio, e di aiutare quelli che stanno iniziando ora, fornendo tutto quello che scoperto, e scopro, utilizzandolo.

Ciao

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: utilizzo dei moduli
« Risposta #4 il: 22 Luglio 2008, 11:47:13 »
Citazione
Ricordo che la dichiarazione in se stessa non crea effettivamente l'oggetto o la variabile in memoria. L'effettiva allocazione deve essere fatta con NEW, per quanto riguarda gli array e gli oggetti


Qui ti devo in parte contraddire. Nell'esempio che ho proposto
io, l'inizializzazione dell'array con NEW non è necessaria, in quanto
le dimensioni sono già dichiarate.
Ho allegato piccolo progetto d'esempio.

Invece all'interno di una SUB, si può procedere in entrambi i modi:

Codice: [Seleziona]


DIM arsMySTrings AS String[]
arsMySTrings = NEW String[10, 10]



è uguale a

Codice: [Seleziona]


DIM arsMySTrings AS String[10,10]



ciao

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: utilizzo dei moduli
« Risposta #5 il: 22 Luglio 2008, 12:36:47 »
Ho scordato l'allegato.

Offline melchisedec

  • Gamberetto
  • *
  • Post: 29
    • Mostra profilo
Re: utilizzo dei moduli
« Risposta #6 il: 22 Luglio 2008, 12:50:26 »
grazie a tutti e due per le sisposte soddisfacenti sia a livelolo teorico mdi base per la programmazione che per quella pratica:)))
fanno sempre comodo entrambe