文字列関数とエラー コード

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
Toshi
記事: 98
登録日時: 2005年7月19日(火) 19:47
お住まい: 山形県
連絡する:

文字列関数とエラー コード

#1 投稿記事 by Toshi »

コード: 全て選択


Dim i As DWord
i=GetLastError()
Debug

こうして i の値を確認すると当然 0 ですが、

コード: 全て選択


Dim i As DWord
i=GetLastError()
Debug
Val("")

こうすると何故か 6 になっています。
因みにエラー コードの 6 は「ハンドルが無効です」でした。
Val や Str$ で発生しました。
これらの関数の中で何かエラーになっているのかも知れないと思います。

また疑問ですが、関数を呼ぶ前から 6 というエラー コードが返って来ているのは何故なんでしょうか?
Uhsp

#2 投稿記事 by Uhsp »

私の環境(ActiveBasic4.12.02 UHSP3.10)では「ハンドルが無効です。」
エラーは出ませんが(把握している起動時)直前のエラーが表示されます。

下記にてエラーをクリヤーしてサンプルを実行するとエラーは出なくなるので
サンプル実行以前にエラーがあるのでは無いでしょうか?

コード: 全て選択


 Declare Sub SetLastError Lib "kernel32" ( _
         ByVal dwErrCode as Long)

 SetLastError(0) 
Toshi
記事: 98
登録日時: 2005年7月19日(火) 19:47
お住まい: 山形県
連絡する:

#3 投稿記事 by Toshi »

ご指摘の通り、エラーをクリアすると確かにエラーが出なくなりました。

するとこれ以前にエラーがあるということになりますが、
ただの abp ファイルにこの例を記述するだけでエラーが出ていました。

・エラー コードをクリアせず、関数も呼ばないと 0
・エラー コードをクリアせず、関数を呼ぶと 6
・エラー コードをクリアし、関数を呼ばないと 0 (当然ですね)
・エラー コードをクリアし、関数も呼ぶと 0

そして関数を呼ぶのがエラー コードを取る前でも後でもエラーが出ていることから、
関数を呼ぶコードを記述しただけでエラーが出るということになりますね。
するとインクルードの方に何かあるんでしょうかね?
Uhsp

#4 投稿記事 by Uhsp »

下記結果から#N88BASIC関係でエラーが出ているのではと推測されます。

コード: 全て選択


'Error=6
#N88BASIC
print GetLastError()
while 1
Wend

'Error=203
#console
print GetLastError()
while 1
Wend

'Project(RAD)
'Error=0
Sub MainWnd_CommandButton1_Click()
    msgbox 0,Str$(GetLastError())
End Sub
返信する