Newsgroup: it.comp.lang.delphi
Titolo: variabili globali quante ?

Ciao a tutti,
come vedete voi l'uso delle variabili globali ?
Se ne può usare quante se ne vuole (ram permettendo)
e possono portarsi in giro codicilli con visibilità totale
Pericolose se il codice è molto complesso ok però.....
Qualcuno parla di usare delle classi  che le incorporino e
in questo caso quale è la sintassi corretta ?
saluti
Omega

 in questo caso quale è la sintassi corretta ?
All'inizio del thread parli di "variabili" globali, pertanto non e'
necessario avere delle classi che le incorporino.
Io per ottenere questo mi creo una unit globals.pas (niente form!) con
questa struttura per poi riempirlo con le variabili globali che voglio
vedere ovunque.
unit Globals;
interface
   var
      NomeUser : string;   // Nome dell'utente loggato
      //IdUtente : Integer;  // Id dell'utente sul database
      DescrUser : string; // Descrizione tecnico/admin
      IsAdmin  : Boolean;  // Indica se l'utente e' amministratore
      HasPrivilege : Boolean; // Indica se l'utente (non admin) ha dei
privilegi
    procedure MostraClessidra;
    procedure TogliClessidra;
implementation
uses Forms,Controls;
procedure MostraClessidra;
begin
  Screen.Cursor := crHourglass;
end;
procedure TogliClessidra;
begin
  Screen.Cursor := crDefault;
end;
end.
CIAO!
-- 
Morde. 
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 in questo caso quale è la sintassi corretta ?
E' una tecnica che io uso sempre quando ho bisogno di gruppi di 
variabili globali, o anche solo per comodità.
In sostanza si crea una o piu classi le cui proprietà sono le variabili 
globali di cui hai bisogno nella sezione dichiari poi una variabile 
globale del tipo della di questa classe.
La variabile viene successivamente istanziata nella sezione 
/initialization/ della unit che la contiente e distrutta nella 
/finalization/.
E' la stessa logica che sta alla base dell'oggetto Application o delle 
variabili (appunto: globali) associate alle singole form.
Ciao,
Gianluca.

 necessario avere delle classi che le incorporino.
Dove e' necessario? Io col metodo che ho postato non ho bisogno di classi.
Approccio diverso, forse? Dentale, labiale.... 
(ho saputo che l'attore che interpreta quel personaggio nella
pubblicita'dalle sue parti e' cercato e, se preso, randellato alla
grande...) :-)
Approccio Dentale, approccio labiale... :-D


 Più mistico!!! Dentale-labiale!
Ecco, ho googlato un po' in giro per capire se l'istinto di prendere a
bastonate col bambu' il tipo della pubblicita non fosse che un mio delirio
di programmatore delphi fallito... e invece ragazzi c'e' da fare un ROTFL
alla grande... (rotolandosi *letterlamente* dalle risate): mai un
personaggio della pubblicita' era riuscito ad istigare cosi' tanti
propositi bellicosi!


Ok dipende dal programma che le ospita e in particolare dalla 
portabilità che si vuol dare al codice.
Forse sbaglio ma per come sviluppo io le utilizzo molto.
Diverse volte infatti mi capita di scrivere metodi che ricevono
parecchi parametri e il codice mi diventa di difficile lettura.
Naturalmente un codice portabile è sempre meglio infatti per quelle
procedure o funzioni che possono essere generalizzate per usi futuri
non sfrutto la globale.
Bene come sempre gentilissimi e grazie dei consigli.
Omega

 Omega
Ciao

 propositi bellicosi!
Sei un grande, altro che ROTFL qui c'è da decollare dalle risate :-) Va 
bè che nel mondo della pubblicità ce n'è davvero, hai presente Diego 
cosa mi metto ? E gli fa vedere degli abiti mozzafiato e poi lui la fa 
vestire con pastrano osceno e calze alla pippi calzelunghe :-)))))) ? 
Sarà la nostra vera razionale che ci spinge a notare queste cose ? ;)
Antonio

 Sarà la nostra vera razionale che ci spinge a notare queste cose ? ;)
O sarà la pazzia? :-O
Sai, in questi giorni c'e' in giro la pubblicita' del lasonil del tipo che
nell'attreaversare una strada si scaviglia... e nel mentre arriva un camion
che inchioda e lui per la reazione si strappa anche la schiena e  il collo.
Ecco, quando ho visto scendere l'autista del camion con in mano
l'estintore.... l'ultima cosa che ho pensato e' che gli applicasse il
lasonil, ho temuto di trovarmi invece davanti ad arancia meccanica II dove
l'autista massacra il malcapitato a colpi di estintore e nell'andarsene gli
passa pure sopra!
ROTFL ^ 2 !!!!


 in questo caso quale è la sintassi corretta ?
potresti creare una classe e invece delle variabili usare delle 
property, in questo modo avresti un maggiore controllo della variabili 
globali.
esempio banale:
type mia_classe=class
      private
        f_valore : integer;
        procedure set_valore(x:integer);
      public
        property valore1 : integer read f_valore write set_valore ;
      end;
procedure mia_classe.set_valore(x:integer);
begin
   f_valore := x;
end;
var aa : mia_classe;
procedure TForm1.Button1Click(Sender: TObject);
begin
   aa := mia_classe.create;
   aa.valore1 := 20;
   aa.free;
end;
ciao

 
una volta stava succedendo anche a me, stavo leggendo un messaggio e 
volevo rispondere che ero daccordo, poi mi sono accorto che l'avevo 
scritto io :-).
ciao

Andiamo con ordine...
1) Quante? NESSUNA
2) Se ne POSSONO usare un bel po? Si, il numero è direttamente 
proporzionale all'indice di masochismo indicato sulla prp scheda sanitaria
3) Non sono PERICOLOSE: sono DEVASTANTI
-- 
Alberto Salvati
A NEAPOLITAN Delphi Developer who is studying c# and .net
"Dicette 'o pappece 'nfaccia 'a noce dammi 'o tiempo che pure te spertoso"

 parecchi parametri e il codice mi diventa di difficile lettura.
Scusami, omega, ma si questo punto devo dilungarmi un attimo....
1) in molti manuali di programmazione sono indicate alcune "regole", tra 
queste il numero massimo consigliato di parametri è 7.
2) Io lavoro in OO in modo etremo e di rado arrivo a 5.
3) Se ne hai di +, sarebbe il caso di fermarsi e riflettere.
Usare variabili globali non è una buona soluzione per una progettazione 
poco accurata.


 poco accurata.
Si ho capito usare le variabili globali è sconsigliato Ok.
Qualcuno però a consigliato di usare le classi e le proprietà al posto 
delle globali questa soluzione allora potrebbe andar bene:
rispetta i canoni dell'oop.
Però sul numero di parametri avrei qualche dubbio. Dipende dal tipo di 
progetto che si realizza. Se però intendi creare classi e metodi che 
ricevono un massimo di 7 parametri che poi possono essere estese grazie
all'ereditarietà allora convengo.

 all'ereditarietà allora convengo.
no. se un metodo astratto o virtuale ha 4 parametri i suoi override 
avranno 4 parametri.


 avranno 4 parametri.
Perň posso aggiungere un metodo che riceve i 4 parametri piu 1 no ?