ページ 1 / 1
引数に長い文字列を指定したときの奇妙なエラー
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
そのときは
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
MessageBox(0,Ex"AucMon Ver 1.17以前からバージョンアップした方は、先にForShifting.exeを1度だけ実行する必要があります。\r\nAucMonを起動しますか?\r\n\r\n既に実行した方は[OK]を、まだ実行していない方は[キャンセル]をクリックしてください。\r\nVer 1.20以降より使用を開始された方は、[OK]で構いません。\r\n\r\nこのウィンドウは1度[OK]を押すと次回からは表示されません。","AucMon",MB_ICONEXCLAMATION Or MB_OKCANCEL)
このコードでエラーになったのですが、今実行するとなぜかうまくいきました。
理由は定かではありませんが、PCの調子が悪かっただけなのかもしれません。
ご迷惑をおかけしました。
自己レスです
Posted: 2006年10月07日(土) 23:07
by hira
先ほどは大きな勘違いをしていまして。
Ifの条件に入れるのを忘れていました。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
If MessageBox(0,Ex"AucMon Ver 1.17以前からバージョンアップした方は、先にForShifting.exeを1度だけ実行する必要があります。\r\nAucMonを起動しますか?\r\n\r\n既に実行した方は[OK] を、まだ実行していない方は[キャンセル]をクリックしてください。\r\nVer 1.20以降より使用を開始された方は、[OK]で構いません。\r \n\r\nこのウィンドウは1度[OK]を押すと次回からは表示されません。","AucMon", MB_ICONEXCLAMATION Or MB_OKCANCEL)=IDCANCEL Then
End If
このコードで「閉じカッコの後に…」というエラーが発生します(当方では確実に発生)。
よろしくお願いします。
※If~End Ifの間にはコードがあってもなくてもエラーになります
Posted: 2006年10月08日(日) 01:39
by 山本
詳細のご報告、ありがとうございます。こちらでも再現できました。原因もわかりましたので、次回のバージョンアップで修正させてもらいます。