Области действия имен
В программе на языке FPC различают глобальные и локальные имена. Глобальные имена определены во внешней программе. Память под них выделяется статически при компиляции. Они доступны во всех внутренних точках, в том числе в подпрограммах.
Локальные имена определены в подпрограммах. Память под них выделяется динамически (в стеке) при исполнении подпрограммы. Они доступны во внутренних точках подпрограммы, а во внешней программе недоступны.
Если локальное и глобальное имя совпадают, то в подпрограмме локальное имя блокирует глобальное. Совпадения глобальных и локальных имен лучше избегать. Чтобы получить доступ к глобальному имени в подпрограмме, его надо указывать составным. Формат доступа к глобальному имени: <имя программы>.<глобальное имя>. Пример:
program Names_View;
{$mode objfpc}{$H+}
uses SysUtils; // Ссылка на модули
var I:integer; // Глобальная переменная I
procedure Proc;
var I:real; // Локальная переменная I
begin
I:=7; // Задание локальной переменной
I:=2.1+Names_View.I; // Обращение к глобальной переменной
writeln(I); // Результат в процедуре – число 5.1
end;
begin
I:=3; // Задание глобальной переменной
Proc; // Обращение к процедуре
readln; // Пауза, чтобы увидеть результат
end.
Нетипизированные параметры
Нетипизированные параметры применяются, когда тип параметра не имеет существенного значения (например, в процедурах побайтового копирования или перемещения блоков данных). Нетипизированными могут быть только параметры с атрибутом var.