Le costanti
Come nel Turbo Pascal , il Free Pascal supporta sia le costanti normali che quelle tipizzate.
-
Come nel Turbo Pascal , il Free Pascal supporta sia le costanti normali che quelle tipizzate.
-
La dischiarazione delle costanti ordinarie non è differente dal Turbo
Pascal o dal Delphi.
Il compilatore deve essere in grado di valutare l'espressione di una
dichiarazione di costante nel momento della compilazione.
Questo significa che molte delle funzioni della libreria di Run-Time non
possono essere utilizzate in una dichiarazione di costante.
Gli operatori come :
+,-,*,/,not,and,or,div,mod,ord,chr,sizeof,pi,int,trunc,
round,frac,odd
possono comunque essere utilizzati.
Possono essere dichiarate costanti solo dei seguenti tipi :
Ordinal,Real,Char,String.
Le seguenti sono dichiarazioni valide :
Const
e = 2.32122546; { Costante Real}
a = 2; {Costante Ordinal (integer)}
c = '4'; {Costante Char}
s = 'Costante Stringa'; { Costante String}
s = chr(32);
ls = SizeOf(Longint);
L'assegnazione di un valore ad una costante ordinaria non è permesso.
Quindi , date le precedenti dichiarazioni , la seguente darà come
risultato un'errore di compilazione.
s := 'qualche altra stringa';
-
Le costanti tipizzate servono a fornire un programma con delle variabili
già inizializzate.
La differenza rispetto ad una variabile normale è che il suo valore è
già inizializzato quando il programma viene avviato , invece una
variabile normale deve essere inizializzata esplicitamente.
Data la dichiarazione :
Const
S : String = 'Questa è una costante
tipizzata';
La seguente è un'assegnazione valida :
S := 'Risultato : '+Func;
Dove Func è una funzione che restituisce una Stringa.
Le costanti tipizzate sono spesso utilizzate per inizializzare gli
array e i Records.
Per gli array , gli elementi iniziali devono essere specificati ,
racchiusi tra parentesi tonde , e separati da virgole.
Il numero degli elementi deve essere esattamente lo stesso del numero
di elementi dichiarati.
Un'esempio :
Const
tt : array [1..3] of string[20] = ('aaa','bbb',
'ccc');
tt : array [1..3] of Longint = (1,2,3);
E ora un'esempio con i Records :
Type
Point = record;
X,Y : Real;
end;
Const
Origin : Point = (X:0.0; Y=0.0);
L'ordine dei campi in una costante di record deve essere lo stesso della
dichiarazione , altrimenti verrà generato un errore di compilazione.
-
Un sezione speciale per la dichiarazione delle costanti è la sezione
delle Resourcestring.
Questa sezione è simile ad una sezione Const , ma permette di dichiarare
solo costanti del tipo string.
è possibile utilizzare questa sezione solamente in modalità Delphi oppure
objfpc.
Il seguente è un'esempio :
Resourcestring
FileMenu = '&File...';
EditMenu = '&Edit...';
Tutte le costanti di tipo stringa definite in questa sezione sono
memorizzate in tabelle speciali , permettendo di manipolarne il valore
a RunTime per mezzo di alcuni speciali meccanismi.
Semanticamente , le stringhe sono come costanti.
Non è possibile assegnare dei valori ad esse , fatta eccezione di
utilizzare gli speciali meccanismi messi a disposizione nella Unit objpas.
Uno degli utilizzi più frequenti delle resourcestring è quello di mettere
a disposizione un metodo semplice per l'iternazionalizzazione (traduzione)
dei programmi.
-