7.2.2. Вещи, которые являются дополнительными

На верх  Назад  Вперёд

Здесь приведён список элементов, которые возможны в Free Pascal, но не существуют в Turbo Pascal или Delphi.

1.Функции Free Pascal могут возвращать сложные типы, такие как записи и массивы.

2.В Free Pascal можно использовать функцию, возвращающую значение, внутри самой функции, как переменную. Например:
function a : longint;
begin
  a := 12;
  while a>4 do
    begin
      {...}
    end;
end;
Описанный выше пример будет работать в ТР, но компилятор будет подразумевать, что а > 4 – это рекурсивный вызов. Если вы и на самом деле хотите выполнить рекурсивный вызов, вы должны добавить скобки () после имени функции:
function a : longint;
begin
  a := 12;
  {Это рекурсивный вызов}
  while a() > 4 do
    begin
        {...}
    end;
end;

3.В Free Pascal частично поддерживаются языковые конструкции Delphi (см. «Руководство программиста»).

4.В Free Pascal процедура Exit позволяет вернуть значение для функции:
 
function a : longint;
begin
  a := 12;
  {Это рекурсивный вызов}
  while a() > 4 do
    begin
      exit(a*67); {При выходе функция вернёт значение a*67 }
    end;
end;

5.Free Pascal поддерживает перегружаемые функции. Это означает, что вы можете определить множество функций с одинаковыми именами, но различными аргументами. Например:
 
procedure DoSomething (a : longint);
begin
  {...}
end;
 
procedure DoSomething (a : real);
begin
  {...}
end;
 
Затем вы можете вызвать процедуру DoSomething с параметрами типа longint или real. Эта особенность подразумевает, что функция, объявленная первой, должна быть всегда определена в заголовке полным именем, например:
 
procedure x (v : longint); forward;
{...}
 
procedure x; {Это перегрузит ранее объявленную процедуру х}
begin
  {...}
end;
Такая конструкция вызовет генерацию ошибки компилятором, потому что компилятор не найдёт объявление процедуры procedure x (v : longint). Вместо такого варианты вы должны объявлять вашу процедуру х следующим образом:
 
procedure x (v : longint);
{Это правильное определение предварительно объявленной х}
begin
  {...}
end;
Опция командной строки –So (см. раздел «(*) 5.1.5. Параметры для исходных кодов (опции языка)») отключает перегрузку функций. Если вы используете эту опцию, то описанные выше примеры будут компилироваться как в Turbo Pascal.

6.Перегрузка операторов. Free Pascal допускает перегрузку операторов, то есть вы можете определить оператор «+» для матриц.

7.В файловых системах FAT16 и FAT32 поддерживаются длинные имена файлов.