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
$X
Деректива компилятора
Контроль обработки некоторых расширений Паскаля unit
  
1 {$X-}

2 {$X+}
Описание
Директива компилятора $X определяет, включает ли Delphi множество расширений языка Паскаля или нет.

Это затрагивает три области:

1.Обработка функций как процедуры
Код примера показывает эффект до и после применения $X. Когда +, Delphi позволяет игнорировать результаты функции, таким образом отменяя обработку результатов функций, как будто это была процедура.

2.Использование результатов функций
С $X-, вы должны возвратить значение функции, присвоив его псевдопеременной с тем же самым именем, что и функция. Например: function GetValue : Integer; begin GetValue := 23; end; С $X +, вы можете присвоить псевдопеременной Result, как в коде примера.

3.Обработка массива Char как строки
С $X +, обнулённому массиву Char переменных может быть присвоено значение строки. Также может быть назначено, пока массив имеет элемент со значением #0, чтобы показать конец строки.
Примечания
$ExtendedSyntax эквивалентна $X.

$X+ является значением по умолчанию

$X должен быть установлен в вашем коде только однажды.
Похожие команды
$BoolEval  Сокращаются ли вычисления при операциях or или and

$ExtendedSyntax  Контроль обработки некоторых расширений Паскаля

Function  Определяет подпрограмму, которая возвращает значение

 
Пример кода : Сбой компиляции кода, который не назначает результат функции
begin
  // Выключение расширенного синтаксиса
  {$X-}

  // Вызов функции 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
  // Выключение расширенного синтаксиса
  {$X+}

  // Вызов функции GetValue, не назначая результат
  GetValue;
end;

// Функция, которая просто возвращает значение 1
function TForm1.GetValue: Integer;
begin
  Result := 1;
end;
Код компилируется нормально и выполняется, нечего не делая.
 
Здесь нужно купить рекламу за 2 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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