ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 21:48

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年7月17日(日) 01:19 
 ONERRORとかTRAPERRORなどのエラースキップ処理命令
変数の型をチェックする命令・方法ってありますか?
標準命令を探したのですが無い様なので良い方法があれば教えてください。 

'Dim ii as Long
' TRAPERROR :ii="A" :If CheckError Then ii=-1

'Dim ii as Long
'ONERROR(Sub()) :ii="A"

'Function Sub()
' ONERROR()
'End Function

'isLong(ii) :isString("A")


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年7月17日(日) 11:17 
オフライン

登録日時: 2005年5月31日(火) 09:34
記事: 141
お住まい: 北海道
引用:
 ONERRORとかTRAPERRORなどのエラースキップ処理命令
変数の型をチェックする命令・方法ってありますか?
標準命令を探したのですが無い様なので良い方法があれば教えてください。
コンパイラ型言語という性質上,そのような命令はありません。

特にuhspさんがおっしゃる「型違いエラー」については,コンパイル時に
エラーがチェックされるのでそもそも必要ありません。

「ファイルが開けない」とか,実行時にしか分からないエラーについては,
関数の返り値とかでエラーかどうかが判断できるのが普通です。

_________________
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年7月17日(日) 12:11 
オフライン

登録日時: 2005年5月31日(火) 07:49
記事: 162
> 「ファイルが開けない」とか,実行時にしか分からないエラーについては,
> 関数の返り値とかでエラーかどうかが判断できるのが普通です。

確かに実行時エラーについては、API関数の戻り値などに十分に気を払っていれば対処できます。
しかし、厳密な異常系の処理を記述するのは相当の困難が伴いますし、プログラムの本当の流れを見失いやすくしてしまいます。
API系統で発生したエラーはともかくとして、ゼロ除算など、実行時に自動検出が出来るエラーというのは少なくないものです。
オーバーフローの場合、コードによる検出は困難です。
このようなエラーが発生したときに自動的に対処してもらいたいものですが、現状のABではそれが出来ません。
ABがエラーに弱い言語であることは否めないのです。
ちなみに、C言語ではゼロ除算エラーがトラップされなかったとき、OSによってプログラムが止められます。
ABでは、何事もなかったかのように処理を継続します。
もしエラー検査を怠っていれば、深刻な大惨事に至るのは必至です。
しかし、ABが自動的にエラーを検出してくれれば、その分すっきりとしたコードが書けるのではないでしょうか。


> 特にuhspさんがおっしゃる「型違いエラー」については,コンパイル時に
> エラーがチェックされるのでそもそも必要ありません。

本当に必要ないでしょうか。
実は、実行時型チェックの考え方は既に存在します。
C++のRTTIなどを調べてみてください。
AB4からはオブジェクト指向プログラミングをサポートしますから、考える余地はあるはずです。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年7月17日(日) 12:25 
オフライン

登録日時: 2005年5月31日(火) 09:34
記事: 141
お住まい: 北海道
引用:
> 特にuhspさんがおっしゃる「型違いエラー」については,コンパイル時に
> エラーがチェックされるのでそもそも必要ありません。

本当に必要ないでしょうか。
実は、実行時型チェックの考え方は既に存在します。
C++のRTTIなどを調べてみてください。
AB4からはオブジェクト指向プログラミングをサポートしますから、考える余地はあるはずです。
考え方自体が必要ないというよりは,(現状の)ABの性質上必要ないということです。

確かにABでも出来ると面白いかもしれませんが,(私は・いまのところ)ABにそこまでは求めませんね(^^;)
※テンプレートとかはあってもいいかもしれませんが




※とりあえずオーバーロードは欲しいです(笑)

_________________
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年7月17日(日) 15:49 
 Sinryow・takさん早速の回答ありがとうございます。

 言語仕様の問題なのは理解できましたが
宣言された変数のタイプすらコンパイル時にしか判読できないのでしょう?。
(バリアント型の変数が扱えると変数の型が判読できる気がするのですが)

 コンパイル時にエラーをトラップする手段は言語仕様に依存してしまい
別の方法での処理も不可能なのでしょうか?。

#ActiveBasicの利点はBASIC感覚でネイティブコンパイルが出来て
ランタイムが不要に魅せられて学習を始めましたが
従来のBASICの感覚では扱いずらいですね。

#しかしネイティブコンパイルなBASICは
殆どこんな感じかGTKを使用してますね。(FreeBasic Bcx etc)


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年7月17日(日) 21:47 
オフライン

登録日時: 2005年5月31日(火) 09:34
記事: 141
お住まい: 北海道
引用:
 言語仕様の問題なのは理解できましたが
宣言された変数のタイプすらコンパイル時にしか判読できないのでしょう?。
(バリアント型の変数が扱えると変数の型が判読できる気がするのですが)
もともとAB(3~4)は言語のシステムがCに近いこともあり,難しいと思います。
もしやるとすればAB自体にそのシステムを導入するか自分で実装することになると思いますが
自分で実装するとすれば最低でも(?)テンプレートが必要になるでしょうから・・・。

_________________
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[13人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean