Описание |
Директива компилятора $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 должен быть установлен в вашем коде только однажды.
|
|
Похожие команды |
$BoolEval Сокращаются ли вычисления при операциях or или and
$X Контроль обработки некоторых расширений Паскаля
Function Определяет подпрограмму, которая возвращает значение
| |
|
Пример кода : Сбой компиляции кода, который не назначает результат функции |
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'
|
|
| Пример кода : Код, который не назначает результат функции компилируется нормально |
begin // Выключение расширенного
синтаксиса
{$ExtendedSyntax On}
// Вызов функции GetValue, не
назначая результат
GetValue;
end;
// Функция, которая просто возвращает значение 1
function TForm1.GetValue: Integer;
begin
Result := 1;
end;
|
Код компилируется нормально и выполняется, нечего не делая.
|
|