Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
$ExtendedSyntax
Деректива компилятора
Контроль обработки некоторых расширений Паскаля unit
  
1 {$ExtendedSyntax Off}

2 {$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 должен быть установлен в вашем коде только однажды.
Похожие команды
$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;

Код компилируется нормально и выполняется, нечего не делая.
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия