AutoCAD LTを利用できる新発想システム開発ツール! 安全と信頼の完全自社開発製品! |
エラー処理
|
エラー処理 |
||
LT VB-COMで作成するプログラムのエラー処理について説明します LT VB-COMによるプログラムを作成する際、エラー処理を自由に制御できるようになっています。そのために、エラー制御用の関数が用意されています。エラー制御用の関数には以下のようなものがあります。 errorStatus(エラー状況取得)
errorTypeSet(エラー表示方法設定)
これらの関数を利用して、独自にエラーの処理を実現できます。 エラーメッセージの制御: エラーメッセージの制御の基本は、「errorTypeSet(エラー表示方法設定)」によるエラー表示の制御です。既定の状態ではエラーメッセージは、ダイアログボックスとして表示されます。ダイアログボックスによるエラーメッセージが表示された場合、「OK」ボタンを押さないと次のステップに進みません。プログラムの設計上エラーメッセージを無視して次のステップに進んだり、エラーメッセージの情報を残しながら次のステップに進みたい場合もあります。また、必要に応じて必要なメッセージだけを表示したい場合もあります。これらのエラー表示を実現するためには、「errorTypeSet(エラー表示方法設定)」にてエラーの表示方法を制御します。 エラー制御の使用例) エラー制御を使用する際の例を示します。 以下のプログラムは、「画層」(テーブル)に「"画層1"」という名前の新しい「画層」(テーブルレコード)を作成するサンプルです。 ------------------------------------------------------------------------- Sub Sample() Dim es As Boolean '(命令の「エラー状況」を格納する変数宣言) Dim recId As Variant '(「オブジェクトID」を格納する変数宣言) '外部プログラムとの接続手続き Dim obj As Object '(外部プログラムとの接続手続き保存用) Set obj = GetObject ( , "LT_VBCOM.Application"" '(外部プログラムとの接続手続き) '「"画層1"」という名前の「画層テーブルレコード」を作成 es = obj.makeRec ( "画層テーブルレコード" , "画層1" , recId) End Sub ------------------------------------------------------------------------- しかし、このサンプルプログラムでは、「"画層1"」がすでに存在する場合には、次のエラー表示の警告ボックスが表示され、終了してしまいます。 「画層1」は画層テーブルにすでに存在します。 LT VB-COMのシステムが、同じ名前のシンボルテーブルレコードを作成しようとした場合に出す警告の表示です。(上記のプログラムを2度実行させれば、2度目には必ずこの警告メッセージが表示されます。) しかし、プログラムの設計上ここで警告のダイアログボックスが表示されることが、迷惑な場合もあります。例えば、以下のような例の場合です。 例) 画層(テーブル)に新しく「"画層1"」という名前の画層(テーブルレコード)を作成します。ただし、「"画層1"」がすでに存在する場合は、「"画層2"」という名前で作成します。 この例では、「"画層1"」が存在する場合に、自動的に「"画層2"」を作成しなければなりません。一般的には「makeRec」関数を使用する前に、画層テーブル オブジェクトに「つながって」いる画層テーブルレコード オブジェクトの中に名前が「"画層1"」のものがあるかを評価してから実行します。 ------------------------------------------------------------------------- Sub Sample() Dim es As Boolean '(命令の「エラー状況」を格納する変数宣言) Dim getData As Variant '(「取得データ」を格納する変数宣言) Dim recId As Variant '(「オブジェクトID」を格納する変数宣言) '外部プログラムとの接続手続き Dim obj As Object '(外部プログラムとの接続手続き保存用) Set obj = GetObject ( , "LT_VBCOM.Application"" '(外部プログラムとの接続手続き) '「"画層1"」がすでに存在するかを評価 es = obj.table ( "画層テーブル" , "所有?" , "画層1" , getData) If getData = 0 Then '「"画層1"」という名前の「画層テーブルレコード」を作成 es = obj.makeRec ( "画層テーブルレコード" , "画層1" , recId) Else '「"画層1"」が存在する場合「"画層2"」という名前の「画層テーブルレコード」を作成 es = obj.makeRec ( "画層テーブルレコード" , "画層2" , recId) End If End Sub ------------------------------------------------------------------------- しかし、この場合画層テーブル上での評価など、手間もかかります。このような場合に、エラー制御を利用することで以下のように、エラー表示を抑制し、簡単に作業をさせることも可能です。 ------------------------------------------------------------------------- Sub Sample() Dim es As Boolean '(命令の「エラー状況」を格納する変数宣言) Dim es2 As Boolean '(命令の「エラー状況」を格納する変数宣言) Dim recId As Variant '(「オブジェクトID」を格納する変数宣言) '外部プログラムとの接続手続き Dim obj As Object '(外部プログラムとの接続手続き保存用) Set obj = GetObject ( , "LT_VBCOM.Application"" '(外部プログラムとの接続手続き) es2 = obj.errorTypeSet ( 2 ) 'エラー表示を「オフ」に設定 '「"画層1"」という名前の「画層テーブルレコード」を作成 es = obj.makeRec ( "画層テーブルレコード" , "画層1" , recId) es2 = obj.errorTypeSet ( 0 ) 'エラー表示を「ダイアログ」に設定 If es = False Then '「"画層1"」が存在する場合「"画層2"」という名前の「画層テーブルレコード」を作成 es = obj.makeRec ( "画層テーブルレコード" , "画層2" , recId) End If End Sub ------------------------------------------------------------------------- この場合「makeRec」が正常に動作しない場合でも、エラーメッセージは表示されずに次のステップへと進めることができます。必要に応じてエラー制御を戻すことで、以降のエラー処理を通常通りに戻すことも可能です。 |