Newsgroup: it.comp.lang.delphi
Titolo: Passaggio di parametri: qualcosa non torna

Ciao a tutti,
Supponiamo che abbia questo listato:
program pippo;
var x: boolean;
procedure esempio (var x: boolean);
 begin
  x := true;
 end;
begin
  x := false;
  esempio (x);
  if x then writeln 'x = true' else writeln 'x = false';
end.
Mi sorprende che non riesca a fare lo stesso anche in delphi. In pratica 
definisco a livello programma una variabile booleana.
In sostanza, avrei la necessità di rendere una variabile interna a una 
funzione/procedura visibile a livello di programma e non di 
procedura/funzione.
Ho provato a fare qualcosa di simile in delphi ma ricevo una serie di errori 
per cui deduco che non è il procedimento giusto che sto seguendo.
Come posso risolvere questo problema?
Grazie in anticipo,
Cooper. 

 per cui deduco che non è il procedimento giusto che sto seguendo.
Dovresti sempre e comunque indicare gli errori laddove vuoi ottenere 
spiegazioni. :-|
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)


E' quello che avevo fatto in origine, con la differenza che il valore non 
veniva rilevato. Ti posto il codice che interessa la mia situazione nello 
specifico:
var
  Flag: Boolean;
procedure TForm.ButtonOrigineClick(Sender: TObject);
begin
 OpenDialogOrigine := TOpenDialog.Create(self);
 OpenDialogOrigine.Options := [ofFileMustExist];
 OpenDialogOrigine.Filter :=  'Tutti i File|*.*';
 OpenDialogOrigine.FilterIndex := 2;
 if OpenDialogOrigine.Execute Then
   EditOrigine.Text := OpenDialogOrigine.FileName;
 OpenDialogOrigine.Free;
 Flag := False;
end;
procedure TForm.ButtonRipristinaClick(Sender: TObject);
begin
 EditTipoFile.Text := '';
 Flag := True;
end;
procedure TForm.EditOrigineChange(Sender: TObject);
begin
    if Flag = False then
      Begin
        EditTipoFile.Text := GetExtFile (EditOrigine.Text);
      End;
end;
GetExtFile è una function definita da me.
Il problema è che non riesco a far vedere il valore assunto da Flag di volta 
in volta nelle tre procedure. In sostanza:
a) l'utente inserisce il nome del file
b) viene scritto su un campo text l'equivalente dell'estensione del file 
(es: exe => executable file)
premendo sul button ripristina, viene restituito un errore di I/O seguente: 
"project xxx.exe raised exception class elnouterror with message I/O error 
6".
Grazie ancora per la pazienza.
Cooper. 

procedura/funzione.
Perché senti questa esigenza? Non è un buon segno.  Le variabili
globali si possono non utilizzare e utilizzarle significa darsi la
zappa sui piedi.  Qual è il problema a monte che stai cercando di
risolvere?

in volta nelle tre procedure.
Il problema non è questo.  Le tre procedure "vedono" Flag
tranquillamente, sia che essa sia una variabile globale, sia che essa
sia un membro privato della form.

 ha scritto nel messaggio 
news:agju02pi9bqil3seh...@4ax.com...

Rispondendo a Marco ho citato la parte di codice piu significativa a cui mi 
riferisco, se necessario dimmi che ti riposto.
Cooper. 


mmm, ammetto che qualcosa mi sfugge molto probabilmente perchè non sono 
ancora entrato bene nella ottica della programmazione OOP, però, se le tre 
procedure "vedono" la flag, per quale motivo non la trattano correttamente?
Grazie ancora per la tua disponibilità.
Cooper. 

procedure "vedono" la flag, per quale motivo non la trattano correttamente?
Che le tre procedure vedano il flag non è in discussione: lo vedono (e
lo trattano correttamente, se per "trattare correttamente" intendi che
sono capaci di assegnare/testare il valore).  Se le procedure non
avessero quella variabile nel loro scopo, il compilatore ti
bloccherebbe segnalando un "undeclared identifier".  Il problema che
hai a run-time non è legato all'uso del flag, ma a qualcosa di strano
che fai nella tua funzione.

avessero quella variabile nel loro scopo,
Errata Corrige: nel loro "scope".