Newsgroup: it.comp.lang.delphi
Titolo: Problema con uses

Salve ... ho un problema alquanto singolare ....
Ho una forma con variabile pubblica intera che ha una valore ( 5 )
Richiamando una seconda form ( che ha nella uses il richiamo alla 1. form )
e girando in debug il valore di quella variabile é 0.
Sapete spiegarmi dove stň sbagliando?
Grazie

 Sapete spiegarmi dove stò sbagliando?
non fidarti troppo del Debug... fa cose strane a causa
dell'ottimizzazione...
a volte vedrai dei cicli for incrementali che invece di incrementarsi si
decrementano perchè è più conveniente per il compilatore... quindi vedi il
valore magari inserendo uno showmessage... almeno io a volte faccio così
quando vengono fuori queste anomalie...
--
Max Etere
massimili...@programmando.org
http://www.programmando.org

 ha scritto nel messaggio
news:b9vmhk$dl8$1...@fata.cs.interbusiness.it...



    Via De Gasperi, 14 - 42019
    Scandiano (Reggio Emilia)

 ha scritto nel messaggio
news:RIJwa.97597$3M4.2...@news1.tin.it...



   metti le tue variabili in questo punto e le puoi sicuramente usare in
un'altra unit.
  Nicola

 [...]
Forse avrei anche dovuto dire "posta solo le parti significative che
riguardano strettamente il tuo problema", cioè la porzione di codice che
dichiara la variabile e quella che ne imposta e/o usa il valore.
Nel codice che mi hai riportato, un "copia e incolla brutalis", non si
riesce a distinguere nulla.
Ad ogni modo, in Delphi non esiste un concetto di "variabile pubblica"
al contrario di altri linguaggi e ambienti di sviluppo (es. Visual Basic
pre-.NET).
Con la parola chiave "var" puoi dichiarare le variabili all'interno di
procedure o unit; dichiarala nella sezione "interface" di una unit ed
essa sarà accessibile da tutte le unit esterne che faranno uso di tale
unit, includendola tramite la parola chiave "uses".


1) gli oggetti di accesso ai dati dovrebbero stare in un data module.
Il tuo codice non separa logica da interfaccia utente.
2) invece di associare i compiti ai pulsanti crea della TAction e associ
queste ai pulsanti
3) usa le property nella sezione public al posto delle variabili.
4) troppe dipendenze tra le 2 unit.
Bye
A.

 Basic pre-.NET).
Cosa stai dicendo, Willy :(
Saluti
Paolo Arosio

 Sapete spiegarmi dove stò sbagliando?
Dando un'occhiata al codice che hai postato, l'ipotesi migliore che mi
viene in mente e' che _in debug_ l'istanza di TForm_IPPOS che contiene 5
non sia la stessa che stai esaminando.
Che relazione esiste fra Form_IPPOS e FormIPPOS_Errori? Chi alloca le
due form? Se sono istanziate a runtime, ti consiglio di levare le due
variabili di riferimento alle form che sono inserite in automatico
dall'IDE.
Inoltre, questo pezzo puo' dar luogo ad errori:
  ListView1.Items.Add;
  ListView1.Items.Item[I_C].Caption    := aErrori[I];
  ListView1.Items.Item[I_C].ImageIndex := 0;
userei o il with:
  with ListView1.Items.Add do begin .. end
o una variabile appoggio: li: TListItem;
  li := ListView1.Items.Add;
  li.Caption  ...
Saluti
Paolo Arosio

 Cosa stai dicendo, Willy :(
Mi riferisco al fatto che la dichiarazione di una variabile non è
automaticamente "globale", cioè visibile a tutte le unit del progetto, a
meno che la unit che la contiene non venga utilizzata tramite la
clausola "uses" all'interno di un altro modulo.
A tal proposito ho fatto l'esempio di VB: se nel modulo di una form
viene dichiarata una variabile "public", essa è visibile e modificabile
da qualsiasi altro modulo.
