PDA

Visualizza la versione completa : [DELPHI] Dichiarazione di una variabile globale


nifriz
17-09-2009, 17:54
Ciao a tutti,
ho bisogno di dichiarare nella mia MainUnit una variabile Globale, ossia vista da tutta la unit dall'inzio alla fine, quindi prima dell'implementation una cosa del genere:

...
...
var
MainForm: TMainForm;
MIAVAR: TMIAVAR;

implementation
...
...


Però l'idea di utilizzare una variabile globale non mi piace molto, posso in qualche altro modo aggirare il problema?
Spero di essere stato chiaro...

attendo risposte :popcorn:

alka
17-09-2009, 18:30
Originariamente inviato da nifriz
Ciao a tutti,
ho bisogno di dichiarare nella mia MainUnit una variabile Globale, ossia vista da tutta la unit dall'inzio alla fine, quindi prima dell'implementation una cosa del genere [...]

Dire "vista da tutta la Unit" è improprio: si dovrebbe verificare cosa ha bisogno di utilizzare una variabile... se si tratta di procedure o funzioni, oppure di classi.


Originariamente inviato da nifriz
Però l'idea di utilizzare una variabile globale non mi piace molto, posso in qualche altro modo aggirare il problema?

Come ho detto prima, dipende dall'uso che devi fare di quella variabile, e anche dallo scopo che le viene attribuito. A cosa serve?

Ciao! :ciauz:

nifriz
18-09-2009, 11:38
La variabile mi serve perchè leggo un file generato ad-hoc, devo leggerlo tutto e spaccarlo buttando in questa variabile che è un array of TMIOTIPO (format a sua volta da n. campi)...

Questa variabile la carico nella prima routine ed ho bisogno di utilizzarla più volte nel programma, in diverse procedure ed eventi, per quello mi serve una variabile globale, PURTROPPO. :old:

Comunque ho "risolto" creando una Unit contenente tutte le mie dichiarazioni di tipi e variabili ed includendola nella MainUnit. :sadico:

Grazie lo stesso

alka
18-09-2009, 11:40
L'uso di una variabile globale non è l'unica soluzione viabile: si può anche creare un campo in una classe, magari quella del Form stesso, accessibile tramite una proprietà da altre classi, senza mescolare i paradigmi procedurali all'OOP che è un'opportunità utile in molti casi ma da usare con parsimonia, altrimenti perdi la traccia di "chi" modifica "che cosa" nella catena di messaggi (chiamate ai metodi) che si scambiano gli oggetti.

Ciao! :ciauz:

Loading