Директива $ExtendedSyntax компилятора Delphi контроль обработки некоторых расширений Паскаля.
- {$ExtendedSyntax Off}
- {$ExtendedSyntax On}
Директива компилятора $ExtendedSyntax определяет, включает ли Delphi множество расширений языка Паскаля или нет.
Это затрагивает три области:
1. Обработка функций как процедуры
Код примера показывает эффект до и после применения $ExtendedSyntax.
Когда On, Delphi позволяет игнорировать результаты функции, таким образом отменяя обработку результатов функций, как будто это была процедура.
2. Использование результатов функций
С $ExtendedSyntax Off, вы должны возвратить значение функции, присвоив его псевдопеременной с тем же самым именем, что и функция.
Например: function GetValue : Integer; begin GetValue := 23; end;
С $ExtendedSyntax On, вы можете присвоить псевдопеременной Result, как в коде примера.
3. Обработка массива Char как строки
С $ExtendedSyntax On, обнулённому массиву Char переменных может быть присвоено значение строки.
Также может быть назначено, пока массив имеет элемент со значением #0, чтобы показать конец строки.
Примечания.
$ExtendedSyntax эквивалентна $X.
$ExtendedSyntaxOn является значением по умолчанию
$ExtendedSyntax должен быть установлен в вашем коде только однажды.
Директива компилятора $ExtendedSyntax: Сбой компиляции кода, который не назначает результат функции
begin
// Выключение расширенного синтаксиса
{$ExtendedSyntax Off}
// Вызов функции GetValue, не назначая результат
GetValue;
end;
// Функция, которая просто возвращает значение 1
function TForm1.GetValue: Integer;
begin
Result := 1;
end;
Результат
Сбой компиляции :
[Error] Unit1.pas(39): Statement expected, but expression of type 'Integer' found
[Error] Unit1.pas(45) Undeclared identifier: 'Result'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Директива компилятора $ExtendedSyntax: Код, который не назначает результат функции компилируется нормально
begin
// Выключение расширенного синтаксиса
{$ExtendedSyntax On}
// Вызов функции GetValue, не назначая результат
GetValue;
end;
// Функция, которая просто возвращает значение 1
function TForm1.GetValue: Integer;
begin
Result := 1;
end;
Результат
Код компилируется нормально и выполняется, нечего не делая.
Похожие функции, процедуры и команды
$BoolEval — сокращаются ли вычисления при операциях or или and.
$X — контроль обработки некоторых расширений Паскаля.
Function — определяет подпрограмму, которая возвращает значение.
