HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0619
ht.sbcobj.hpi(オブジェクトのサブクラス化用拡張プラグイン)の不具合0解決


ht.

リンク

2013/6/19(Wed) 14:31:17|NO.55081

kz3さんが作成された、sbcobj.hpiの不具合を見つけたので報告します。
sbcobj.hpiはHSPのオブジェクトをサブクラス化し、oncmdライクに
子コントロールのメッセージを取得できるようにする拡張プラグインです。

どうやらobjcmd命令とonexit, oncmd命令の併用でランタイムエラーが発生することがあるらしく
以下はそのランタイムエラーの再現スクリプトです。

// pattern 1

#include "sbcobj.as" input a objcmd stat, 0x100, *on_keydown onexit *on_exit // gosubにするとエラーなし stop *on_keydown return *on_exit end
// pattern 2

#include "sbcobj.as" input a objcmd stat, 0x100, *on_keydown oncmd gosub *on_command, 0x111 // こちらはgosubを抜くとエラーなし stop *on_keydown return *on_command end
要因の考察:
pattern 1 … onexitがサブルーチン形式で呼び出されないとエラーが起きる
pattern 2 … oncmdによるサブルーチン内でreturnされずにendされるとエラーが起きる?

エラー全文:
=============================================
Microsoft Visual C++ Runtime Library

Runtime Error!

Program: C:\hsp33\hsp.exe

This application has requested the Runtime to terminate it in an unusual way.
Pleas contact the application's support team for more information.
=============================================

sbcobj.hpi自体は7年前に更新が止まっているようなのですが、
子コントロールのサブクラス化はHSPではたびたび話題にも挙がる汎用性の高いプラグインですので
今後の利用者を想定してここに解決策を掲示しておきます。



この記事に返信する


ONION software Copyright 1997-2023(c) All rights reserved.