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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0416
AKIHIROonexitからの復帰6解決


AKIHIRO

リンク

2007/4/16(Mon) 21:17:43|NO.7516

できないんですが、できないんですか?

処理中にクローズボックス押されると処理の途中で飛んじゃって
フラグ立てて戻る場所きめてても処理がおかしくなってしまします。

何かいい対処法はありませんか?



この記事に返信する


kz3

リンク

2007/4/16(Mon) 22:04:03|NO.7519

いきなり「出来ないが、出来るのか」ときりだされてもチンプンカンプンです。

>処理中にクローズボックス押されると処理の途中で飛んじゃってフラグ立てて戻る場所きめてても処理がおかしくなってしまします。

処理のおかしくなる例を示せば具体的な回答が得られるかも知れません。
今の段階では雲の上の話で、本人しか症状を把握できていません。

>何かいい対処法はありませんか?

「どうしたい」のかが書かれていないので対処法を挙げられません。



a

リンク

2007/4/16(Mon) 22:40:29|NO.7521

>いきなり「出来ないが、出来るのか」ときりだされてもチンプンカンプンです。
タイトルに「onexitからの復帰」とあるのだからそれのことだと分かるだろ。

>「どうしたい」のかが書かれていないので対処法を挙げられません。
だから、onexitから復帰したいんだろ。

確かにonexitからの復帰が何を意味するのかよく分からんが、上記ぐらいは分かれ。
これぐらいのことも分からないのなら回答せずにROMってろ。



Drip

リンク

2007/4/16(Mon) 22:56:46|NO.7525

Dripです。

 AKIHIROさん、こんにちは。
onexit命令は書式によって処理を投げたまま帰ってこないようにするタイプと、
処理に行って戻ってくる2つの書き方ができます。

onexit *label

であれば、終了されたら*labelへgotoするのと同じで戻って来れませんが、

onexit gosub *exit

であれば、終了処理後、もとの場所に戻って来る事が出来ます。
ちょっと変な文法ですがこの書き方はonclick,onkey等でも行う事ができます。
以下に簡単なサンプルを用意しましたので試してみてください。

onexit gosub *exit mes "repeat開始。repeatにネストしたのでここで処理が中断されたら困ります。" mes "クローズボックスで終了されても、onexit gosub *label と設定されているので、" mes "で割り込み処理があってもreturnで復帰できます。" repeat title ""+cnt await 30 loop *exit dialog "割り込み処理。\n終了しますか?",2 if stat!7:end return //復帰
ではでは



水野

リンク

2007/4/16(Mon) 23:20:23|NO.7526

AKIHIROさん、
処理中にクローズボックスを押されてから
元の処理を飛んだところからやり直すとい
うのならば、ソース内の
 onexit goto *label 
を、
 onexit gosub *label 
に 変えてサブルーチンジャンプを行わせれば
得策かと?
そのさい、処理に入ればある変数を何かに変更し、
onexitのとび先でそのある変数がその何かの数になったならば、
直ちにreturnし、処理を再開。
もし、onexitで飛ばずに処理が終了したならば、
ある変数を決めておいた値にする。(0など)
また、処理が終了し、onexitで飛んできたならば、
endで終わる。

以下、そのサンプル


/*上に示した方法のデモ。*/ onexit gosub *SubRoutinue /*問題のonexit*/ EndFlags=0 /*初期値*/ title "SampreProgram" /*今回取り上げる時間のかかる処理は、 ネガ反転です。 取り上げたわけは、目で見やすく、 1dotごとの処理なので、そこそこ時間が かかるからです。 ただの処理だなとしか見ないで結構です。 なので、処理部にはコメントは入れません。*/ /*時間のかかる処理、はじめっ*/ EndFlags=1 /*実行中の印をつける*/ dialog "bmp;*.gif;*.jpg;*.ico",16 if stat=0 {end} /*拒否されちゃーおしめいよう!*/ picload refstr for x,0,ginfo_winx,1 for y,0,ginfo_winy,1 pget x,y color ginfo_r^$FF,ginfo_g^$FF,ginfo_b^$FF pset x,y next wait 1 next /*処理終了*/ EndFlags=0 /*初期値に戻す。*/ dialog "処理終了" stop *SubRoutinue if EndFlags=1 { dialog "処理中です。\n処理を続行します。",1 /*これが出りゃー処理中*/ return }else{ repeat /*念のためループ*/ end loop }



hiroki

リンク

2007/4/17(Tue) 08:21:43|NO.7546

最近、荒れ気味になって書き込みを控えてますが、

>分かるだろ。

じゃなく

「解るでしょ」

ね。(-_-;)



AKIHIRO

リンク

2007/4/17(Tue) 15:50:46|NO.7553

できました。今までgotoでやってました。
それから、誤解を与えるような文章でした。
説明不足な点があったことをお詫びします。
タイトルと2重に同じことを書くとしつこいかと思いましたのであえて省いて書きました。
回答してくださったみなさま、補足まで書いていただいてありがとうございました。



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