ページ 11

引数に長い文字列を指定したときの奇妙なエラー

Posted: 2006年10月03日(火) 21:18
by hira

コード: 全て選択

If MessageBox(0,[およそ200バイト以上の文字列],"AucMon",MB_ICONEXCLAMATION Or MB_YESNO)=IDNO Then
	End
End If
↑[およそ200バイトの文字列]には実際にはリテラル文字列が入ります。

これで、なぜか「閉じカッコ ")" の後に不正な文字が含まれています」エラーになり、さらに場合によっては「"MB_YESIDNO" 無効な識別子です」などという意味のわからないエラーまで発生してしまいます。
「200バイト」というのは第3引数の長さなどによっても変わってきますが、上のコードではピッタリ200バイトまではOKで、201バイト以上では上のような奇妙なエラーが発生します。
WindowsXP Home(SP2)、ActiveBasicはVer 5.00.00(CP2) 及び Ver 4.24.00 でこの現象の発生を確認しました。

Posted: 2006年10月05日(木) 17:46
by 山本
こんにちは。山本です。こちらでも200バイト以上の文字列で動作検証を行いましたが、そのような不具合に遭遇することはありませんでした。長さだけでなく、文字列データの性質にも関係がありそうですので、問題が起きる文字列をご指定していただけますでしょうか?

お手数をおかけしてしまいますが、よろしくお願い致します。

Posted: 2006年10月07日(土) 15:34
by hira
そのときは このコードでエラーになったのですが、今実行するとなぜかうまくいきました。
理由は定かではありませんが、PCの調子が悪かっただけなのかもしれません。
ご迷惑をおかけしました。

自己レスです

Posted: 2006年10月07日(土) 23:07
by hira
先ほどは大きな勘違いをしていまして。
Ifの条件に入れるのを忘れていました。 このコードで「閉じカッコの後に…」というエラーが発生します(当方では確実に発生)。
よろしくお願いします。
※If~End Ifの間にはコードがあってもなくてもエラーになります

Posted: 2006年10月08日(日) 01:39
by 山本
詳細のご報告、ありがとうございます。こちらでも再現できました。原因もわかりましたので、次回のバージョンアップで修正させてもらいます。