単純要素または Group 要素 の仮説のプロパティにアクセスする前に、アクセス対象の仮説がヌル仮説ではないことを確認してください (IsNull プロパティを呼び出します) 。ヌル仮説 (検出されなかった要素に対応する仮説) のプロパティにアクセスすると、エラーが発生します。ここでは、プログラム CD-ROM に収録されている Sample 1 のプロジェクトを使った例を見てみましょう。文書上にバーコード形式の識別子があり、そのバーコードの値が 1556897142240 である文書にだけ FlexiLayout をマッチングさせたいとします。これを実現するには、次のようにします。バーコードのプロパティと検索条件を記述する要素 (Sample 1 の IdentityNumber 要素) の Advanced post-search relations セクションに、次のコードを記述します。ifvalue != “1556897142240” then Quality: 0;Apply または Check をクリックします。コンパイラは構文エラーを検出しないため、コードは正しいように見えます。しかし、Sample 1 の任意のページで FlexiLayout のマッチングを実行すると、次のエラーメッセージが表示されます: ” Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber.”エラーの原因は次のとおりです。プログラムはまずバーコード要素の仮説を見つけます。次に、バーコードの値をコードで指定された値と比較します。値が異なる場合、Quality: 0; によって仮説の値は 0 にリセットされます。すると、この要素に対してヌル仮説が生成され、プログラムはそのヌル仮説についても条件 value != “1556897142240” をチェックします。ヌル仮説の value にはアクセスできないため (このプロパティを持たないため) 、プログラムは “…undefined hypothesis…” というエラーメッセージを出します。そのため、コードは次のように修正する必要があります。if not IsNull then {
ifvalue != “1556897142240” then Quality: 0;
}Note. 上記のコードは、必須要素に対してのみ機能します。オプション要素の場合は、コードを次のように調整する必要があります。if not IsNull then {
ifvalue != “1556897142240” then Quality: 0;
}
else {Quality: 0;}そうしないと、実際の仮説の品質だけが 0 にリセットされます。するとプログラムはヌル仮説を生成しますが、その仮説に対しては “if not IsNull” が実行されません。そのため、最終的な (ヌル) 仮説の品質は要素のプロパティで指定された値のままになります (既定値のままであれば 0.97) 。その結果、指定した要素がなくても、プログラムは FlexiLayout のマッチングを続行します。コードに else {Quality: 0;} を追加すると、この文はすべての仮説 (ヌル仮説を含む) に対して実行されるため、FlexiLayout のマッチングは停止します。これは、この要素で仮説チェーン全体も 0 にリセットされるためです。
メソッド Region Region() と Region SimplifiedRegion() の比較
メソッド Region Region() と Region SimplifiedRegion() はどちらも要素の Region を取得できますが、Region Region() が返すのは正確な Region です。一方、Region SimplifiedRegion() が返すのは、境界座標に基づいて作成された Rectangle です。