Я создавал некоторые функции в Delphi 5 и случайно попытался скомпилировать без запятых, разделяющих список параметров, и, как ни странно, это работало совершенно нормально.
Я попытался выделить проблему следующим образом:
program Project1;
{$APPTYPE CONSOLE}
procedure foo(i : integer; s : string; di : integer = -1);
begin
WriteLn(s);
end;
var
str: string;
int: integer;
begin
str := 'aaa';
int := 1000;
foo(int str int);
ReadLn;
end.
И он компилируется, исключений не выдается, и параметры переопределяют функции полностью, как и ожидалось.
Что я заметил, так это то, что если я в конце удаляю параметр по умолчанию, он начинает выдавать ошибку компиляцииNot enough actual parameters
Почему Delphi имеет такое поведение?Это какая-то ошибка компилятора или странная механика?