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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1114
nyaosマクロを使ったエラー処理について4解決


nyaos

リンク

2012/11/14(Wed) 12:56:14|NO.50642

処理の簡易化のためにエラー処理をマクロで行いたいを思っています。
意図しているのは tryでエラートラップを仕掛け、エラーが発生した時だけ
except内を処理するというものです。


#define global try %ttry onerror *%i #define global except %ttry *%o: onerror 0: if err { %c #define global tryend } try a = 10 / 1 ;a = 10 / 0 ;エラー19 try b = 9, "abc" ;エラー31 except mes "内側No." + err + "エラーです" tryend except mes "外側No." + err + "エラーです" tryend mes if err: mes "いつまでもerrは残ります" try c = 1 ;c("key") = 5 ;エラー6 except mes "別の部分No." + err + "エラー" tryend mes "おわり"

システム変数errでエラーがあるかどうかを判定しているので、一度でもエラーが
発生すると、errがクリアされない限り何度でもexcept内が実行されてしまいます。

err = 0 が実行出来れば解決なんですが、それはダメな様です。

なにか他にいい方法があれば教えて下さい?
そもそもエラーが起こったらその時点で終了するというのがHSPのお約束なのでしょうか?



この記事に返信する


inovia

リンク

2012/11/14(Wed) 14:39:19|NO.50644

HSPCTX構造体経由でシステム変数errの値を変更できます


mref HSPCTX, 68 HSPCTX.194 = 0



nyaos

リンク

2012/11/14(Wed) 16:44:45|NO.50645

inovia様ありがとうございます。
これでやりたかったことが出来ました。

ところでmrefの68番、HSPのシステム情報(HSPCTX構造体)
の中身については何か資料があるのでしょうか?

一応解決しましたが、良かったら教えて下さい。



ツオノ

リンク

2012/11/14(Wed) 18:45:14|NO.50653

hsp をインストールしたフォルダの、『hspsdk/hspdll.txt』 内に情報が有ります。
HSPCTX が 定義されたファイルは、『hspsdk/hsp3rd/hsp3/hsp3struct.h』です。

どちらもC言語のソースをある程度読める必要が有ります。
もしC言語が読めないのでしたら

ネコでもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
のC 言語の項目と



ちょくとのページ
http://chokuto.ifdef.jp/
のhspの裏技?

の項を等その他の講座をしっかり読んで実践しておく必要がある気がします

user32.dll 等のダイナミックリンクライブラリを hsp で使用するには避けて通れない知識です。
知っておいて損は無いでしょう。

何よりHspはC++で書かれていますし。



nyaos

リンク

2012/11/14(Wed) 20:19:13|NO.50659

ツオノ様、ありがとうございます。

hspdll.txt、hsp3struct.h に書いてあったんですね。
ざっと見てみましたが難しすぎて、自分には理解出来そうにありませんでした(泣)。
C言語もほとんどわからないので。

ご提示いただいたウェブサイトを見て勉強したいと思います。



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