厳格になったランタイムチェック
日付 | 2010/08/27 |
---|---|
ID | 76163 (英語原文参照) |
バージョン | 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コマンドに相当します。)