Tips

厳格になったランタイムチェック

日付2010/08/27
ID76163 (英語原文参照)
バージョンv11
プラットフォームMac/Win

4D v11およびv12では, これまで以上にコードのランタイムチェックが厳格になりました。以前のバージョンで検出されなかったようなコーディングのエラーがコンパイルモードでランタイムエラーになるのはそのためです。

典型的なのはNew processです。このコマンドは文字列でメソッド名を受け取るため, 実際のコードはコンパイル時ではなくランタイムに検証されるのが特徴です。4D 2004以前では, New processに多めのパラメータを渡しても問題がありませんでした。余分のパラメーターは使用されることなく無視されるだけだからです。たとえば次のようなコードを実行した場合, 呼ばれるメソッドが$2, $3を宣言していなくても大丈夫でした。

processID:=New Process("myMethod";stackSize;"myProcess";param1;param2;param3)

  //myMethod
C_LONGINT($1)

ALERT("You passed "+String($1))

4D v11またv12では, 上記のような場合, ランタイムエラーが発生します。無効な引数がEXECUTEコマンドに渡されているからです。(New processは, 広義のEXECUTEコマンドに相当します。)