2012-01-12 1 views
4

は、私は、コードエディタがちょうど私のように、最後のパラメータの後にコンマで赤い波線が表示されますので、Delphiコンパイラは、メソッド呼び出しの最後のパラメータの後にカンマを許可するのはなぜですか?

DoSomething('some text',); 

のようなメソッドを呼び出すと、私は、このようなこの1

procedure TMyObject.DoSomething(text: string); 
begin 
    // do something important with the text 
end; 

としての機能を持っていたと言います期待していただろう。コンパイラはこのコードを受け入れますが、コンマは存在しないかのように動作します。

なぜこれが正当な構文と思われますか?これが今日でもまだサポートされている歴史的な理由がいくつかありますか(私はDelphi 2006でこれを試しましたが、othersは2007年も同様でした)。

+0

IIRC、誤って閉じ括弧 ')'が省略され、コードがコンパイルされたときにIIRCと同じようなバグが発生することがありました。 –

+1

これを受け入れるバージョンは何ですか?間違いなく、パーサのバグです。 –

+1

@WarrenP質問:私はDelphi 2006と[others](http://coding.derkeiler.com/Archive/Delphi/alt.comp.lang.borland-delphi/2008-09/)でこれを試しました。 msg00041.html)も2007年にそれを経験したようです。無害です、実際に、私はちょうどこの構文を使用していて、それが今までにコンパイルされた理由を自分自身に尋ねたメソッド呼び出しを見つけました。 – PersonalNexus

答えて

6

このコードでは、Delphi 6、2010、およびXE2でコンパイルエラー(E2034実際のパラメータが多すぎます)が発生します。私は合法的な構文ではないので、あなたのバージョンのコンパイラのバグだと思います。

+0

Delphi 4とDelphi 2009でも同じことが起こります。 –

+0

@AndreasRejbrandこれらのバージョンではコンパイルエラーですか?非常にローカルのバグのように見えます。 –

+0

はい、同じエラーメッセージも表示されます。 –

関連する問題