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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0908
pyonnoteselの多重指定は何か良くないのでしょうか?7解決


pyon

リンク

2011/9/8(Thu) 00:20:26|NO.41224

noteunselのヘルプを読むと、「これによりnoteselによるバッファ指定が多重に行なわれることを防止」
と書かれています。
これは逆に読むとnoteselの多重指定は良くないことのように受け取れますが、
実際に同じバッファに対してnoteselを繰り返した場合に何か問題があるんでしょうか?

実際的には複数のノート用バッファをあちこち切り替えては参照したり書き換えたりしようとしていて、
そのたびに使用中のバッファを確認し解放、再取得を繰り返すのが面倒なのでnoteselだけで済むなら楽です。
でも、それはそれで必須でないと書かれているとは言え
noteunselが何のためにあるのかって気がしますよね。

ちょっと気になったので、よろしくお願いします。



この記事に返信する


TTRUKO

リンク

2011/9/8(Thu) 10:32:29|NO.41229

noteselを延々と繰り返すことでプログラムが落ちたりすることは基本的にないので
本当に不要だと判断したなら、無理に使う必要はないと思います

ただ、私も昔はnoteunselは使ってませんでしたけど、最近はよく使ってます
例えばとある関数の中でnoteselが使われている場合、
その関数を呼び出した場合「あれ?勝手にnoteselの対象が変わったぞ(汗)」
なんてことが起きる可能性があります
自分が作った関数なら、あまりそういうことはないかもしれませんが
規模が大きくなってくると、作った本人ですらわからなくなってくることも…^^;

以前は「note系命令の直前で必ずnoteselする」とか「noteselはこの変数にしか使用しない」
とかいうある程度の縛りを設けてプログラミングすればいいさ〜なんて思ってたんですけど
大きなプログラムを色々作っているうちに、毎回noteunselしたほうがデバッグが楽だ…という考えに落ち着きました〜



lltakashill

リンク

2011/9/9(Fri) 17:54:26|NO.41269

>noteselによるバッファ指定が多重に行なわれることを防止します。
また、http://lhsp.s206.xrea.com/manual/i_string.html
>noteunsel命令は必ず入れておく必要はありません
とありますね。
また、http://www.rinku.zaq.ne.jp/ultimate/hsp3/beginner/
>新命令・関数内でメモリノートパッド対象変数を変更してしまうと、
>メモリノートパッド対象先を新命令外・関数外の変数に戻すことが出来ませんでしたが、
>HSP3から登場した、このnoteunsel命令で戻すことが出来るようになりました。
とあります。
故、"noteunsel"の意味は
「"notesel"による対象先を新命令外・関数外の変数(つまり、ひとつ前のことか?)に戻すこと」
でしょうね。
またその下には、
>notesel命令を繰り返し使用すると、
>バッファの多重指定になるような書き方がヘルプにあります。
>100万回ほどnotesel命令を連続使用してみましたが、影響はないように感じられました。

>複数回notesel命令でメモリノートパッド対象先を変更するようなプログラムを組む場合は、
>念のためnoteunsel命令で戻すようにしておくとイイかもしれませんね。

と書いてあります。参考になったでしょうか?



lltakashill

リンク

2011/9/9(Fri) 17:58:46|NO.41270

追記です。
http://www.rinku.zaq.ne.jp/ultimate/hsp3/beginner/
直リンクではホームに戻されてしまいます。
なので、行き方は、
「左側の"HSP講座"から"〜 HSP3講座 〜"、そして"初心者向け講座"から"第30章 テキスト操作2"」
です。横に長く、すいません。



pyon

リンク

2011/9/10(Sat) 00:35:45|NO.41281

害のあるなしと言うよりは、使用目的の問題みたいですね。
丁寧にありがとうございました。



lltakashill

リンク

2011/9/10(Sat) 09:39:16|NO.41284

どういたしまして^^



Grikot

リンク

2011/9/10(Sat) 11:02:46|NO.41285

使用頻度にもよりますが、個人的には
関数の構造が複雑になってくると、noteunselは必須かな、と思います
gselに対応するgunselなんてのもあると便利なんですけど



ひらまる

リンク

2011/9/10(Sat) 12:43:25|NO.41286

>gselに対応するgunselなんてのもあると便利なんですけど
ですよね。
こんなんでどうでしょうか?

#module ;選択 #deffunc gsel2 int in_scrid selScr ++ scrHistory( selScr ) = in_scrid gsel in_scrid return ;非選択 #deffunc gunsel selScr -- gsel scrHistory( selScr ) return #global ;バッファ生成 repeat 10, 1 buffer cnt loop screen 0 ;スクリーンをランダムに選択 repeat 10 ;ランダムにスクリーンを選択 gsel2 rnd( 10 ) + 1 ;選択しているスクリーンを表示 selScr = ginfo_sel gsel 0 mes "選択スクリーン = " + selScr loop mes "ここからunsel" ;スクリーンの選択を解除 repeat 10 gunsel ;選択しているスクリーンを表示 selScr = ginfo_sel gsel 0 mes "選択スクリーン = " + selScr loop



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