Директива $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 — визначає підпрограму, яка повертає значення.
