为什么Delphi编译器在方法调用中的最后一个参数之后允许逗号?

Per*_*xus 4 delphi compiler-construction history

说我有这样的功能

procedure TMyObject.DoSomething(text: string);
begin
    // do something important with the text
end;
Run Code Online (Sandbox Code Playgroud)

当我这样称呼方法时

DoSomething('some text', );
Run Code Online (Sandbox Code Playgroud)

代码编辑器在最后一个参数后面的逗号处显示一个红色波浪形,就像我预期的那样.但是,编译器接受此代码,并且所有操作都像逗号不在那里一样.

为什么这似乎是合法的语法?是否有一些历史原因今天仍然支持(我在Delphi 2006中试过这个,其他人似乎也在2007年经历过这个)?

Dav*_*nan 6

该代码导致Delphi 6,2010和XE2中的编译错误(E2034实际参数太多).我想这是你的版本中的编译器错误,因为它不是合法的语法.