| 00104 98/11/04 10:01 | RE:00098 パスワードを表示しないで下さ |
| 投稿者 : 秀まるお | コメントを投稿する |
えっと、%%付きの変数の仕様を変えてしまうとちょっとまずいので、新たに%%%付 きの変数で保護するという風にしようかなぁと…。 send文以外では使えない特殊な変数という風にしてしまえば大丈夫だと思います。 (まぁ、この場合でもパソコンを2台直結すれば見えてしまいますが) |
| 00105 98/11/04 17:39 | RE:00104 パスワードを表示しないで下さ |
| 投稿者 : となりのニャンコ | コメントを投稿する |
> えっと、%%付きの変数の仕様を変えてしまうとちょっとまずいので、新たに%%%付 >きの変数で保護するという風にしようかなぁと…。 > > send文以外では使えない特殊な変数という風にしてしまえば大丈夫だと思います。 > > (まぁ、この場合でもパソコンを2台直結すれば見えてしまいますが) > %%%変数なら出来ると言うことですが 以前のバージョンと互換性を持たせるとしたら getversion ##ver if(value( ##ver )=>437) %%%PASS=%%PASS %%PASS="" endif 中略 wait "LOGIN" send %ID + "^M" wait "PASSWORD" if(value( ##ver )<437)send %%PASS + "^M" if(value( ##ver )=>437)send %%%PASS + "^M" となりのニャンコのスクリプトのように こんな程度で済むスクリプトならいいかもしれませんが パスワードを保存するかどうかを聞いてくるスクリプトとか いろいろ複雑なのがありますもんね。 %%%変数にしたら、スクリプト作者からブーイングの嵐間違いなし。 となりのニャンコも捨て猫になってしまうのではないかな。 やっぱり ばらさないのが 一番 いちばん 明日93番削除しちゃおーっと |
| 00106 98/11/04 18:41 | RE:00095 ddewaitadviceコマンドについて |
| 投稿者 : となりのニャンコ | コメントを投稿する |
よこしまさんへ いろいろ実験してみました。 >timeout 60 >loopswitch > case "選択して下さい" > 処理 > case "リターンキーを押して下さい" > 処理 > case "メッセージを編集しますか" > 処理 > case "メッセージを登録しますか" > 処理 > case postmilliidle(1) "" ; ここを書き換えた > 処理 > case timeout > breakloop >endloop 上のスクリプトで、case postmilliidle(1) ""のところにすべてが 集中するのではないかと心配したのですがその心配はないことが 確認できました。 しかし、テキスト送信の再現という目的であれば 「処理」はすべて breakloop になりますので、 :選択して下さい :リターンキーを押して下さい :メッセージを編集しますか :メッセージを登録しますか のcaseはすべて不要と言うことになります。 それらがなければ、case postmilliidle(1) ""のところへ行きますから それでエラーのcaseだけ書いておけばいいのではないでしょうか timeout 6 #lb = "true" loopswitch case "コマンドが違います" #lb = "false" breakloop case postmilliidle(1)"" ; 「なんにもない」をwaitする breakloop case timeout #lb = "false" breakloop endloop if( #lb == "false" ) send"^M" goto Ijyoshuuryou ;異常終了処理サブルーチンへ endif もっと簡単なスクリプトにすると wait postmilliidle(1)"" ; 「なんにもない」をwaitする この1行だけですべてOKということになりますね。 |
| 00107 98/11/04 22:07 | RE:00100 ddewaitadviceコマンドについて |
| 投稿者 : よこしま | コメントを投稿する |
こんにちは、となりのニャンコさん。 月曜日から出かけておりまして, 今日かえって きました. コメントが遅くなりどうもすみません. >このスクリプト間違ってるんじゃないですか >そもそもcaseやwait命令で >case "" ; 「なんにもない」をwaitする >なんてこと自体最初から無理なんじゃないですか。 もうほかの方からコメントがついていますが, 確かに postimiliidle(n) がないとだめみたいですね. いいわけをさせていただくと, 「loopswitch 文は こんな風に使う」というつもりでかいたのであって 「この書き方がいい」というつもりで かいたのではなかったのです. 「case timeout -> breakloop」 というのを入れておいたのも, 「case には timeout を入れられるし, loopswitch を ぬけるときは breakloop を使う」という程度のつもりで 書いていました. 誤解を与えてしまったようでどうもすみません. (かずやさんフォローありがとうございました.) よこしま Send 98/11/04 |
| 00108 98/11/04 22:27 | RE:00106 ddewaitadviceコマンドについて |
| 投稿者 : よこしま | コメントを投稿する |
こんにちは、となりのニャンコさん。 ふたたびよこしまです. >timeout 6 > #lb = "true" >loopswitch > case "コマンドが違います" > #lb = "false" > breakloop > case postmilliidle(1)"" ; 「なんにもない」をwaitする > breakloop > case timeout > #lb = "false" > breakloop >endloop >if( #lb == "false" ) >send"^M" >goto Ijyoshuuryou ;異常終了処理サブルーチンへ >endif 場合が2つかないのであれば, switch 文で十分です. --------------- timeout 6 switch case "コマンドが違います", timeout send"^M" goto Ijyoshuuryou ;異常終了処理サブルーチンへ case postmilliidle(100) "" ; 何もしない endswitch ---------------- loopswitch は受信する文字列がそのときに よって違う場合に使います. ちなみに文字列変数は処理が遅くなる場合があるので 可能な限り数値を使うのがいいと思います. 例 ------------ ##init = 0 timeout 6 switch case "コマンドが違います" ##init = -1 case timeout send"^M" case postmilliidle(100) "" ##init = 1 endswitch if(##init = -1) message "処理がおかしいです." elseif(##init = 1) message "あなたの処理は正しいです." else question "次の操作を処理をしますか?" if(no) exit ensif endif 次の処理 ---------- よこしま Send 98/11/04 |
| 新規に投稿する |