00124 98/11/09 15:02 RE:00120 ddewaitadviceコマンドについて
投稿者 : とほほ   コメントを投稿する


‖> マクロサーバはもともと、秀Term用に作られたものではありません。
‖> 秀丸エディタでの、マクロ処理でできない部分を補うために作成されたも
‖> のだと聞いています。
‖> 従って、マクロサーバを作成したのは斉藤さんではなく、秀丸エディタを
‖> 作成した人です。(名前忘れちゃった(^-^;)

あ、なるほど、そうですかわかりました。ありがとうございます。m(__)m

まだ、スクリプトの勉強を始めたばかりで人の作ったスクリプトを見てDDEの
コマンドを使ったダイアログは非常に便利だな、とは思ったのですが、いざ
自分で作ってみようと思うと中々理解が進みません(^^;

また一連のお話の中で、DDE コマンドを間違って使うとシステム全体にも負
担をかけてしまう、と言うお話があったように見うけられましたが具体的に
こう言う事には注意した方が良い、と言う事はありますか?

なんか、ついでの質問の様で恐縮です。(^^;

とほほ


00125 98/11/09 16:22 RE:00115 ddewaitadviceコマンドについて
投稿者 : となりのニャンコ   コメントを投稿する

postmilliidleについて私なりの結論

よこしまさんの108から
##init = 0
timeout 6
switch
case "コマンドが違います"
##init = -1
case timeout
send"^M"
case postmilliidle(100) ""
##init = 1
endswitch
 上のスクリプトの場合だと、postmilliidle(10)ではだめです。
やっぱり100ミリ秒必要です。(10)だと、コマンドが違いますなのに、
なんにもないの方へいってしまう可能性があるんです。

かずやさんの117から
>>100にするとはっきり遅いのがわかります。
>そうでしょうか?実際にはかってみましたか?(^-^;
正確に計ることは出来ませんが、1000にすると1秒ずつ遅れていくのがはっきり
わかるので、100だったら0.1秒遅れるのだろうと言うことです。
 だから私なりの解釈をして100行送信すると10秒の損、と言うことです。

それで10秒のタイムロスはどうしても我慢できなかったので、結局
wait postmilliidle(10) ""
これ1行で全部を済ませてしまったんです。
よこしまさん かずやさん ごめんなさい


00126 98/11/09 16:24 menu-switch resultについて
投稿者 : となりのニャンコ   コメントを投稿する

よこしまさん かずやさん こんにちは となりのニャンコです
以前に質問したいと言いましたが質問内容を考えているうちに出来てしまいました。
お聞きしたかったことは、getline コマンドについてでした。どうしても動かなかっ
たので質問したかったわけですが、動いたので別の質問をしたいと思います。

「電報」という機能をご存じでしょうか
TALK と入力すると、現在通話中の会員さんのID一覧が表示されます。
ID           NAME  
aaa00000     となりのニャンコ
bbb11111     うちの三毛
******

次に相手のIDを入力して
1行だけメッセージを送るというものです。
できあがったスクリプトは以下のとうりです。

Talk:
chat off
chat on
send "TALK" + "^M"
wait "ID"
timeout 1
##dc = 0

beginloop
getline #talk[##dc]
if(timeout)goto Denmenu
##dc = ##dc + 1
endloop

Denmenu:
##sa=1
beginloop
##sa=##sa+1
if(part(#talk[##sa],0,6)=="******")##mc=##sa
if(##sa >= ##dc)breakloop
endloop

Dencount:
#talk[##mc]=""
##mc=##mc+1
if(##mc==21)goto Denmenugo
goto Dencount

Denmenugo:
menu"全員に送る","確定(このメニューを終了)","キャンセル",\
#talk[1],#talk[2],#talk[3],#talk[4],#talk[5]
timeout 0
##me=1
switch result
case 0
     send "all" + "^M"
     goto Dennuuryoku
case 1
     getchat #chat
     send #chat + "^M"
     goto Dennuuryoku
case 2
     chat off
     chat on
     send "^M"
     goto Dennuuryoku
case 3
     getchat #chat
     setchat #chat + part(#talk[1],0,9)
case 4
     getchat #chat
     setchat #chat + part(#talk[2],0,9)
case 5
     getchat #chat
     setchat #chat + part(#talk[3],0,9)
case 6
     getchat #chat
     setchat #chat + part(#talk[4],0,9)
case 7
     getchat #chat
     setchat #chat + part(#talk[5],0,9)
case -1
     goto Dennuuryoku
endswitch
goto Denmenugo
Dennuuryoku:

     wait "メッセージを入力して下さい:"
    chat off
    chat on
    ime on

     wait "よろしいですか[Y/n]"
     send "Y" + "^M"

     ime off
     exit

ここでは5人しか対応していませんが
実際のものは、かなりの余裕をつけて30人としてあります。
case 3  から case 7
の部分ですがこれだと5人だからたいしたことないのですが
30人だとどうなるかわかるでしょ
どうにかなりますか。

あっそうそう、getline  コマンドのタイムアウト時間の目安も教えて下さい。


00127 98/11/09 23:52 RE:00126 menu-switch resultについて
投稿者 : よこしま   コメントを投稿する

こんにちは、となりのニャンコさん。

>menu"全員に送る","確定(このメニューを終了)","キャンセル",\
>#talk[1],#talk[2],#talk[3],#talk[4],#talk[5]
>timeout 0
>##me=1
>switch result
>case 0
>     send "all" + "^M"
>     goto Dennuuryoku
>case 1
>     getchat #chat
>     send #chat + "^M"
>     goto Dennuuryoku
>case 2
>     chat off
>     chat on
>     send "^M"
>     goto Dennuuryoku
>case 3
>     getchat #chat
>     setchat #chat + part(#talk[1],0,9)
>case 4
>     getchat #chat
>     setchat #chat + part(#talk[2],0,9)
>case 5
>     getchat #chat
>     setchat #chat + part(#talk[3],0,9)
>case 6
>     getchat #chat
>     setchat #chat + part(#talk[4],0,9)
>case 7
>     getchat #chat
>     setchat #chat + part(#talk[5],0,9)
>case -1
>     goto Dennuuryoku
>endswitch
>goto Denmenugo
>Dennuuryoku:

>ここでは5人しか対応していませんが
>実際のものは、かなりの余裕をつけて30人としてあります。
>case 3  から case 7
>の部分ですがこれだと5人だからたいしたことないのですが
>30人だとどうなるかわかるでしょ
>どうにかなりますか。

メニューの項目の個数が事前に決まっていない場合は

menu ではなく, addmenu - showmenu
を使います.

また case は default というのを使います.



--------

##x = result + 1

switch ##x

        case 0
                exit
        case 1
                処理
        case 2
                処理
        case defalt
                message #talk[##x+1]
endswitch

----------

みたいな感じです.


>あっそうそう、getline  コマンドのタイムアウト時間の目安も教えて下さい。

getline は以外と処理が難しいのでなるべく使わない方が
無難です.

readbuffer を使いのがいいでしょう.

よこしま

Send 98/11/09


新規に投稿する