Newsgroup: it.comp.lang.delphi
Titolo: URGENTISSIMO

Qualcuno conosce il modo per dichiarare una variabile in modo statico
all'interno di una procedura?
P.S. sono un programmatore in c non capisco un tubo di Delphi.
grazie Davide

Davide Barbolini wrote:

Da quado non programmo più in C, non mi sono mai più posto il problema.
Da un punto di vista filosofico mi sono chiesto se il fatto di non 
essere visibile all'esterno della procedura avesse una qualche utilità, 
ma non l'ho mai trovata.
In Pascal stretto, credo che si usi
procedure pluto;
const pippo : integer = 0;
begin
//
end;
le costanti tipicizzate erano usate a questo scopo, in quanto occupano 
fisicamente memoria e sono modificabili (una costante modificabile... urg!)
Non ho sottomano il manuale per controllare...
Ciao.
Mimmo.

 ma non l'ho mai trovata.
...forse non ho afferrato, cosa vuoi dire?
Cià.
Francesco.

 Francesco.
Ciao.
Mimmo.

 fisicamente memoria e sono modificabili (una costante modificabile... urg!)
No, in Pascal non era possibile (almeno che io mi ricordi)
definire delle costanti tipizzate modificabili.
A dire il vero, io trovo una bruttura quella di definire
una costante e poi renderla modificabile.
E' una delle tante storture di Object Pascal.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 definire delle costanti tipizzate modificabili.
Scusa, ho sbagliato: intendevo dire in Turbo Pascal Borland, non il 
Pascal standard del Wirth.
Ciao.
Mimmo.

Pascal standard del Wirth.
Temo che neanche in TP fosse ammissibile.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 Temo che neanche in TP fosse ammissibile.
In TP5 sono sicuro: c'era. Forse non c'era nelle precedenti.
Visti gli scherzi che fa la memoria, sono andato a controllare sul 
manuale della versione 5.5 (la 5 non ce l'ho) ed effettivamente ci sono.
1 pari ? :)
Ciao.
Mimmo.

 In TP5 sono sicuro: c'era. Forse non c'era nelle precedenti.
Vuoi dire che TP5 compila correttamente questo codice:
function Counter: Integer;
const C: Integer = 0;
begin
  Inc(C);
  Result := C;
end;
?


"Andrea Laforgia" ha scritto nel messaggio
| Vuoi dire che TP5 compila correttamente questo codice:
|
| function Counter: Integer;
| const C: Integer = 0;
| begin
|   Inc(C);
|   Result := C;
| end;
|
Questo in TP6 compila e funziona. Probabilmente funziona anche con TP 5.5
(non mi ricordo enormi modifiche apportate al compilatore nel passaggio
tra le due versioni).
program prova;
uses crt;
function conta : integer;
const
 internalcounter : integer = 0;
begin
 inc(internalcounter);
 Conta := internalcounter;
end;
begin
 writeln(conta);
 writeln(conta);
 writeln(conta);
 writeln(conta);
 writeln(conta);
 repeat until keypressed
end.
--
Ciao.
ACSH
[D4]
---------------------------
Chi fa da se'
fatica il doppio

 
Si.
Turbo Pascal 5.5, manuale di riferimento, pag.47: costanti tipizzate.
"Cosě, per ogni entrata ad una procedura o funzione, le costanti 
tipizzate dichiarate localmente non vengono reinizializzate."
Gran cosa, quando la Borland faceva tutta la documentazione in italiano 
pochi mesi dopo quella in inglese.
Ciao.
Mimmo.

tipizzate dichiarate localmente non vengono reinizializzate."
Gia', non ricordavo, comunque, che il TP riuscisse ad
incrementarle.  Non mi e' mai servito, in TP.
