1 名前:名無しさん@お腹いっぱい。 [2015/11/11(水) 13:45:28.80 ID:+oPzgSay0.net] Windowsの作業を自動化するツール フリーソフト版とシェアウェア版の2種類がある ttp://www.uwsc.info/download.html ●UWSC 掲示板(※作成依頼掲示版ではありません) 質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫 www3.rocketbbs.com/13/bbs.cgi?id=umiumi www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past ●UWSC - Wikipedia ja.wikipedia.org/wiki/UWSC ●使い方・基礎解説学習サイト uwsc.g.hatena.ne.jp/cx20/20100131/1264938584 www.confrage.com/uwsc/ necro.jp/dev/uwsc/ park14.wakwak.com/~simizu/uwsc/fruwsc.html canal22.org/ big.tm.land.to/handbook/uwsc.htm www.game-rev.com/review/gameut/uwsc.html ●スクリプトテンプレサイト izagne.com/uwsc/ scripts.web.fc2.com/ www.nagomi-jp.net/~liners/ nem.symphonic-net.com/uwsct/0610uwsct.html siromasa.digi2.jp/uwsc/ iriyak.adam.ne.jp/uwsc.html 前スレ 自動化ツールUWSC使いよ集まれ15 anago.2ch.net/test/read.cgi/software/1436671958/
440 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/30(土) 17:22:29.38 ID:xqf/0swG0.net] 最近getElementsByTagNameなんか使ったこと無いわ… querySelectorばっかり
441 名前:名無しさん@お腹いっぱい。 [2016/01/30(土) 19:15:44.12 ID:M5n6V6080.net] >>412 XPath で記述して展開させたらシンプル
442 名前:名無しさん@お腹いっぱい。 [2016/01/30(土) 20:53:56.31 ID:CxNcpNVU0.net] 最近はじめたのですがUWSCスクリプト編集に最適なおすすめエディタはなんですか? とりあえずnotepad++を使ってますが「\」が使えのがイマイチだと思ってます
443 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/30(土) 21:20:46.06 ID:Pytl/RXf0.net] atom
444 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 00:29:08.15 ID:osD6olzu0.net] サクラエディタのUWSCキーワードモード
445 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 00:30:58.41 ID:TDN+J1+m0.net] 標準で関数名に色が付くMeryでいいんじゃね? つづりで間違って悩んだりもしないだろうし
446 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 00:51:01.33 ID:pVIrtpdo0.net] >>416-418 ありがとうございます いろいろ試してみます
447 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 06:56:23.26 ID:MAkpvZ6c0.net] >>403-405 ,402 ありがとうごさいました 画像を差し替えたところ成功しました
448 名前:名無しさん@お腹いっぱい。 [2016/01/31(日) 08:29:30.29 ID:kKfsHKLi0.net] 質問なのですが、UWSCでサーチエンジンと言うソフトを操作しようと思っても 全く動作してくれません。これは自動化するにあたって、UWSCでは操作ができないアプリもあるということなのでしょうか?? ご教授いただけると幸いです。
449 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 08:38:31.98 ID:sUTMeQpI0.net] できないアプリもある
450 名前:名無しさん@お腹いっぱい。 [2016/01/31(日) 09:35:09.11 ID:/i6usHVb0.net] >>422 やはりですか、、、それがわかっただけでも得るものは大きいです
451 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 15:04:22.93 ID:W6132sy20.net] 戻り値が配列になるものを使う場合ってあらかじめ宣言するときは 配列だって明示的に(?)定義しないのね エラー dim a[2] dim b[3][2] dim i a = split("a b c") for i = 0 to 3 b[i] = split("a b c") next dim a dim b[3] で動く functionの配列戻しが上手くいかないでしばらく頭抱えてた
452 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 15:20:17.78 ID:cL2tI1rC0.net] Split()の返値はSafeArrayだから定義するならSafeArray()じゃない?
453 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 19:30:07.95 ID:SGnnlRSc0.net] >>424 a = split("a b c") for i = 0 to resize(a) print a[i] next これだけでもうごくみたいだけど・・・どうなの?
454 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 20:05:32.38 ID:W6132sy20.net] 普段はEXPLICITしてるから dim a[] = split("a b c") とかって書いて悩んでた SafeArrayを定義するときは配列じゃないなんてきいてないよままん まあ正確には二次元だったのもあって dim a[3][5] for i = 0 to n a[i][] = 関数(i) //←ここ
455 名前: next の書き方がわかんなかった dim a[3] にすれば通るのねってことで土日が終わった [] [ここ壊れてます]
456 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 20:16:13.80 ID:rJZHZ5Hk0.net] そうですか
457 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 20:28:40.93 ID:cL2tI1rC0.net] >>427 >戻値 = SPLIT( 文字列, [区切文字列, 空文字処理フラグ, 数値処理フラグ] ) >戻値 > 作成された一次元配列(SAFEARRAY型) 返値がSafeArrayなのにDIM定義の配列で受けるのがおかしいだろって 遠回しに言ったつもりだったんだけど・・・
458 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 20:48:30.79 ID:W6132sy20.net] SAFEARRAYとはなんぞやDIMとの違いはって HELPみてもさっぱり載ってないもんでよくわかんなかったのです 戻値 = SAFEARRAY( [下限, 上限]) ↑の定義はどこでするのん?みたいな
459 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 21:06:58.46 ID:RkOVI4vxn] 気になって見ていたら本当に載ってなくてワロタ
460 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 21:04:45.22 ID:mevx1vWE0.net] SAFEARRAYはメモリ内での並び順が保証されている配列で宣言したければ普通の変数としてDIMしたら良いだけの話
461 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 22:04:46.46 ID:ymVVdFl90.net] リファレンス見たり、マクロ記録してコピペして作るクソ汚いコードなら簡単なやりたい事作れるようになってきたんだけど、スッキリした綺麗なコーティングとかは何を勉強すれば出来るようになるの?
462 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/01/31(日) 22:28:54.39 ID:h2MIJWcH0.net] 他人の綺麗なコードを見て弄って真似をする
463 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 00:06:56.18 ID:ODrpB13q0.net] あとこれ X = CALCARRAY( split("1 2 3"),CALC_ADD) が駄目で a = split("1 2 3") X = CALCARRAY(a,CALC_ADD) でないと動かないのもよく分からないです 配列なのかなんなのか ヘルプ読んでも <変数> 変数に型はありません(SAFEARRAY型がないとは言ってない) って感じでわけわかめ
464 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 00:37:00.65 ID:+rnmEAjm0.net] 変数の名前で後になって困ることが多い ・適当に名づけて似たような変数名があふれてごっちゃに ・名前を決めかねて、後から読むと意味の読み取れない変数名に ・コードをなおしていくうち、当初の意図とは違うコードになり意味が合わなくなる ・コピペしてきたコードなので意味が合わなくなる こういうのを最初から見越してきちんと決めていくと良いコードになるのかなあ でも、変数使うときって、思考の中心は「こういうコードを作ろう」だから、 変数名に気を取られると「こういうコードを作ろう」の中身を忘れちゃったりするんだよな
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 00:42:55.69 ID:baaBe9/W0.net] せっかく日本語使えるんだから日本語でつけちゃえばいい
466 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 01:03:00.84 ID:VsiPttLF0.net] 単純にスコープの管理が甘いと思う 広いスコープの変数なら「何を保持しているのか」が中心にした方が良い UWSCはクラスのインスタンスを作れないから オブジェクト指向的に変数を管理し難いのが難点だよね それでも自分はある程度の規模のスクリプトならクラスを造って変数を管理するけれどね
467 名前:429 mailto:sage [2016/02/01(月) 01:45:10.84 ID:+rnmEAjm0.net] >>438 そういうものがあるのか 関数まとめて別ファイルに入れてこっちで呼び出して……みたいなことやってるからちょうど良さそう オブジェクト指向と言う名前は聞いたことある、程度の初心者だけど、いい機会だから勉強してみるよ ありがとう
468 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 02:55:35.27 ID:BoGYQ2nB0.net] 名前が決まらないのはその目的(責務)が明確になってないのが原因でもある
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 08:25:33.84 ID:8RvGbPw20.net] 未熟な自分では考えてもできなかったのでご教授ください t=
470 名前:GETTIME() While True ifb CHKIMG("A.bmp") sleep(1.0) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) t=GETTIME() else (中略) ifb CHKIMG("H.bmp") sleep(1.0) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) t=GETTIME() else ifb ((GETTIME()-t)>3) Then BTN(LEFT,CLICK,100,100,0.5) t=GETTIME() endif (中略) endif sleep(0.1) WEND これらを実行する時 ifb CHKIMG("A.bmp") BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) t=GETTIME() に限り「画像Xがある時のみ行う」としたいのです 全てに対してとするならできたのですが1つ目文に対してのみというのができなくて詰まってしまいました [] [ここ壊れてます]
471 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 09:04:45.92 ID:g7iI5XSU0.net] if X and A elseif !A endif
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 09:33:11.94 ID:pZZgy3PS0.net] ifb CHKIMG("X.bmp") AND CHKIMG("A.bmp") こんだけのことやんけ
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 15:18:36.89 ID:hzvm75kL0.net] option shortcircuit付けてな
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 16:00:59.79 ID:Th0k4/oZ0.net] 本体のホットキーを使わずに一時停止をやりたいんですけど こんな感じの関数を随所随所で呼び出すしかないんでしょうか? PROCEDURE ESC_PAUSE IF !GETKEYSTATE(VK_ESC) then exit SLEEP(0.1) REPEAT SLEEP(0.1) UNTIL GETKEYSTATE(VK_ESC) SLEEP(0.1) FEND
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 16:12:58.29 ID:hzvm75kL0.net] 使わずにっていうのは、本体の一時停止をやりたくないのか それとも本体に設定されたホットキー以外のキーで一時停止したいのか どっち?
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 17:12:39.88 ID:Th0k4/oZ0.net] 本体の一時停止ホットキーは、2つ以上のキーで面倒なのと スクリプト内でやれば、好みの条件に出来るかなと思いまして たとえば、マウスカーソルの位置とか PROCEDURE MOUSE_PAUSE IF G_MOUSE_X<1000 then exit Repeat SLEEP(0.1) Until G_MOUSE_X<1000 FEND
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 17:20:38.17 ID:Th0k4/oZ0.net] あと、本体の一時停止ホットキーは 本体から動かしてるスクリプトには有効ですが ランチャー等から起動した別のスクリプトには無効みたいです
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 17:38:04.47 ID:PbXPJngC0.net] >>447 停止処理はSETHOTKEYで呼び出し 停止処理からの復帰は停止処理内でGETKEYSTATE dim i sethotkey(VK_A,,"proc_Pause") while true i= i+1 fukidasi(i) sleep(0.5) wend procedure proc_Pause() repeat sleep(0.5) until GETKEYSTATE(VK_ESC) fend aで処理中断 escで中断からの復帰 中断復帰後は中断時の処理から続いてる事も確認できる sethotkeyでコードの頭に登録すればそれ以降の処理内で一々中断用のコード書かなくてもいいから保守性も高いよ
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 17:41:43.95 ID:hzvm75kL0.net] UIが無い別プロセスのスクリプトにも有効なのは有効だよ。 ただ、2つ以上のスクリプトが動作してると、キーが消費されちゃうので 連打するとか押しっぱなしにするとかしないと効かない。 あーでも一時停止は連打はダメか。 停止のホットキーは押しっぱなしで全プロセス停止に効く。 本体を一時停止してもいいなら、SETHOTKEYで任意のキーを押した時に UWSC本体に一時停止のホットキーを送るってのもありかと。 あと停止はループさせるよりMSGBOXとか出す方が便利とは思うが。
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/01(月) 21:11:01.64 ID:Th0k4/oZ0.net] レス、ありがとうございます >>449 おぉー、ホットキーを設定するやり方ですか 仮想キー限定のようですが、これはいい方法ですね >>450 MSGBOXを使うと、解除がちょっと面倒なんで・・・ あと、UWSC本体を起動せず 下記スクリプトをショートカットから実行した場合 一時停止ホットキーは機能しませんでした for j=1 to 10000 fukidasi(j) SLEEP(0.5) next
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/02(火) 07:05:55.13 ID:Mf47p9PS0.net] >>451 ttp://uproda.2ch-library.com/916238SO2/lib916238.uws 俺はこんな感じでやってる 実際に使うときはウィンドウ指定してアクティブ時にキーチェック
482 名前:オてる [] [ここ壊れてます]
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 13:22:20.05 ID:bYNIn2Du0.net] Google Speech API と組み合わせて音声入力させるものって作れるかなあ?
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 14:03:46.64 ID:fyQC3oxA0.net] すみません、UWSCってこのスレで初めて知ったんですが、業務で利用されてる方いらっしゃいますか?
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 15:21:36.98 ID:ja3vwQ+v0.net] いますよー
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 17:34:50.27 ID:cVw67MCx0.net] 詰まったので質問させて下さい。 現在BluestacksとUWSCを使用して自動マクロを運用しています。 また、離籍時にteamviewerを使用してリモートで操作もしています。 相対座標を使用し、通常は問題なく使えるのですが teamviewer使用時が問題で、セッション終わり毎にダイアログが発生し、そのせいでループが抜けなくなり手間が増えている状態です。 質問なのですが id=GETID("Bluestacks App Player","WindowsForms10.Window.") MOUSEORG(id, MORG_DIRECT) 上記のように指定しても画像検索はできますが座標がおかしくなってまともに動きません。 座標を直接指定しても、画像の場所に直接クリックにしても常に左上の端のみをクリックする状態となっています。 どのように指定をすればいいでしょうか?
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 18:42:53.73 ID:Ml8C21Ff0.net] mouseorgは通用するアプリとしないものがあると何度いわれたらry
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 19:06:31.07 ID:zrOVrXZR0.net] >>456 teamviewer昨日導入したわ。タイムリーな。ツムツムかな? 俺はダイアログ消す方で解消したわ。 UWSCのスケジュールの指定ウィンドウが現れた時で、ダイアログを消すスクリプト登録したらいい感じ。
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 19:21:35.52 ID:cVw67MCx0.net] >>457 ありがとうございます。 自分では通用するのかどうかがわからなかったのと、画像検索はできたので方法があるのかと思い聞いてみました。 申し訳ありませんでした。 >>458 そうだったんですね。 俺は別のゲームです。 プログラミング初心者の為勉強しながらになりますが頑張って組んでみます。 ありがとうございます。
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 19:25:47.32 ID:I350w/WA0.net] >>456 MORG_DIRECTをMORG_CLIENT変える
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 21:48:42.30 ID:DIbZWkUk0.net] BTN(LEFT,CLICK,1200,150,150) と BTN(LEFT,CLICK,1000,150,150) どちらかランダムで一つクリックさせたい場合ってどうやればいいですか?
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 21:57:51.63 ID:EqtNr8zt0.net] ランダムで分岐させたら良い
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 22:23:24.65 ID:4BmdWrRw0.net] >>461 BTN(LEFT,CLICK,1000+RANDOM(2)*200,150,150)
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 23:36:39.04 ID:bosOw8Gy0.net] 整数化しないとひどいことになりそう
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/04(木) 23:42:01.07 ID:EqtNr8zt0.net] 個人的には速度や短さを競うコードコンテスト以外では 結果的にやりたいことになるコードではなく やりたいことをそのままコードにした方が良いと考えるかな メンテで正しく動作しなくなる種になるからね
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 00:29:23.88 ID:Gg6PibGB0.net] >>460 今ってbluestacksをバックグラウンドで動かせるようになったの?
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 02:27:59.12 ID:AORidpJX0.net] >>463 ありがとうございます
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 02:37:46.36 ID:/HWKBYw70.net] プログラミングのプの字も知らないけどUWSCで初挑戦中 画像認識でAの画像が出るまでBの操作を繰り返す Aが出たらその画像をクリックしてCの操作へ これはrepeat-untilでいいですか?
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 04:19:16.20 ID:i6SfBH8K0.net] いいよ(´・ω・`) とにかく自分で書いて試してみるのが上達の近道
500 名前:だよ あとUWSCの本があるからブックオフで見かけたら買うといいよ [] [ここ壊れてます]
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 06:07:19.13 ID:/HWKBYw70.net] ありがとうございます 色々調べ回って393のような形で処理に成功しました これを順不同にするにはどうしたらいいでしょうか a,b,cの画像を出てきた順にクリックしたいとして repeat sleep(0.2) until chkimg("a.bmp")=true or chking("b.bmp")=true or chking("c.bmp") btn(left,click,g_img_x,g_img_y) これを3つ羅列するとできると思うんですが 長ったらしくなるのでこれをスマートに収めるにはfor〜nextで挟めば大丈夫でしょうか
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 09:15:41.63 ID:YVt32lCs0.net] ツムツムはMORG_DIRECT使えますか?
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 09:18:42.14 ID:AKW1xg3y0.net] >>460 ありがとうございます。 試してみましたが、バックグラウンドで動くわけではないのですね。 リモートする際はchromeのリモートデスクトップ使用でダイアログに邪魔される事もなくなりましたのでこのまま使用していきます。
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 12:28:03.94 ID:/waBKm5O0.net] >>470 それ一つで動作するが OPTION SHORTCIRCUITを設定しない標準状態だと g_img_x,g_img_yの中にchking("c.bmp")の結果しか入らないので これを設定する
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/05(金) 18:09:16.28 ID:YVt32lCs0.net] 使えませんでした
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 13:49:52.63 ID:E2a0obR10.net] >>470 散々既出だけど、画像があればクリックしてTRUEを返すCLKIMG関数を自作する。 while true clkimg(
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 13:57:39.57 ID:E2a0obR10.net] なんかカキコが壊れた。 clickImage uwsc でググると過去スレに自作例が出てくるな。 while true ifb clickImage("1.bmp") then //1のクリックに成功した時の処理 endif ifb clickImage("2.bmp") then //2のクリックに成功した時の処理 endif ifb clickImage("3.bmp") then //3のクリックに成功した時の処理 endif wend ごく基本的な構造化なのでまだ早いとかやめてね…
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 14:00:17.77 ID:E2a0obR10.net] クリック後に個別の処理が不要なら clickImage("1.bmp"); clickImage("2.bmp"); clickImage("3.bmp") で済んじゃう
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 21:35:39.00 ID:4Jvgc2PX0.net] かなり初歩的な質問なのですが調べてもあまり分からなかったので質問させて頂きます。 UWSCでログファイルが更新され続ける拡張子がtxtなどのファイルを監視し、目的のログが現れた場合 キーを送信 ってできますでしょうか? やり方を教えて頂きたいです。
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:15:37.28 ID:k3CjFpd40.net] ・日本語をきちんと使えるようにする ・UWSCを勉強する たったこれだけで実現できるようになるよ あとは君の努力次第だから頑張ってね
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:35:58.37 ID:0QAMOn/70.net] シェアウェア版って結構高いねそれでも業務に使える?一台に一ライセンス必要みたいだけど
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:47:44.53 ID:sPS5RQrH0.net] >>480 何度もバカなの?
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:57:49.59 ID:2YduAXx90.net] >>478 質問がごちゃごちゃし過ぎで、丸投げしたいようにしか見えない どのように監視できないのか どのようにログの検索ができないのか どのようにキー送信ができないのか
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 00:40:38.55 ID:puxzTe8g0.net] >>456 これに便乗なんだけど MORG_DIRECTで動作するAndroidのエミュレータってありますか?
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 06:08:59.16 ID:I92VPPhw0.net] uwscって自由すぎて逆に戸惑うことが多くね? TOTAL = MYCALC(300,400) //計算結果を出力 PRINT TOTAL FUNCTION MYCALC(VAL1, VAL2) ADD = VAL1 + VAL2 RESULT = ADD FEND ------------------------------------------------- PRINT MYCALC(300,400) FUNCTION MYCALC(VAL1, VAL2) ADD = VAL1 + VAL2 RESULT = ADD FEND PRINT文にFUNCUTION関数直接書いても出力されるんだな
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 06:13:42.80 ID:mZHgAHcI0.net] 関数の引数に関数を入れるのは普通 出来ない言語の方が珍しい
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 06:14:43.21 ID:oQyphb55
] [ここ壊れてます]
518 名前:0.net mailto: >>481 そう、パかなの。一台に六千円てことは百台で六十万てことでしょ? exe化したらライセンスフリーってことはexe化したもなのなら配布自由ってことか、配布したPC全部にライセンスいるのかの思ったよ。やっぱり馬鹿だったんだな俺 [] [ここ壊れてます]
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 07:45:41.55 ID:JTReqb1J0.net] 気づけてよかったね
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 07:48:35.49 ID:TPGZWfB40.net] 今までで割引キャンペーンとかってやったことある? やってくれれば買うんだけどな
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 12:25:34.39 ID:DbLS0yGv0.net] 関数の引数に関数を入れる、が関数ポインタとかラムダ式、リスナクラスの話に聞こえてちょっとビックリしたw
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 12:30:27.93 ID:UmG8NUOx0.net] あっしには何を言ってるのかさっぱり
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 15:28:50.99 ID:cJXx45gX0.net] >>487 気付かせてくれてありがとう
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:18:51.61 ID:I92VPPhw0.net] >>485 そうなんだ、知らなかった 教本みたいなサイトって丁寧に関数書くから 他人のコード見た時に「なんだこれ!」ってなってびっくりしたわ ついでに聞きたいんだけどさ --------------------------------------------------------------- クリック("ボタン")// FUNCTION クリック(name) IFB CHKIMG(name + ".bmp",0) BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) KBD(VK_a,CLICK) ENDIF RESULT FEND ------------------------------------------------------------- こうやってCHKIMGの画像ファイル名を関数の引数?を使って好きに変えれるようにしたんだけど 同じようにKBD(VK_a,CLICK) のVK_aの部分も変えられるように出来ないかね?
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:28:24.73 ID:mZHgAHcI0.net] VK_Aとかは定数だから変数に入れたり計算させても大丈夫だよ 例えば VK_A + 1 と VK_B は同じだったりとかね
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:34:53.46 ID:I92VPPhw0.net] へー、面白いな 今やってみたら出来たよ ありがとう
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:48:58.52 ID:C1KScm550.net] コードが難読化するからコーディング規約で禁止してるところも多いけどまぁ便利だよね
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 20:25:57.04 ID:Op3LiiL10.net] そもそも関数という形はそういう書き方をするためのものだろう。 受け取るだけの変数を毎回経由するなら戻り値なんて機能は不要だし。
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:06:48.25 ID:T9ZC/Zyz0.net] 質問したい A処理 └B処理 └C処理 という感じの処理があって、これをFUNCTION ABC()にまとめた ABC(Aへの引数) と書くとCまで行くようになっている だけどA処理を飛ばしてB処理の部分を利用したいこともある AB飛ばしてC処理をしたい時もある そういう場合にABC(0,Bへの引数,0)やABC(0,0,Cへの引数)と書けば処理ができるように作ってみたんだけど これ以外に簡便なやり方って無いかな? i.imgur.com/TdIP4wY.jpg ------------------------------ FUNCTION ABC(Aへの引数,Bへの引数,Cへの引数,戻り値) RESULT = False |IFB !Aへの引数=0 | (A) 処理 |ELSE | |IFB !Aへの引数=0 | | (B) Aの値を継承して処理 | |ELSE | | (B') Bへの引数を使って処理 | | |IFB !Aへの引数=0 | | | (C) Bの値を継承して処理 | | |RESULT = True | | |ELSEIF Aへの引数=0 and !Bへの引数=0 | | | (C') B'の値を継承して処理 | | |RESULT = True | | |ELSEIF Aへの引数=0 and Bへの引数=0 | | | (C'') Cへの引数を使って処理 | | |RESULT = True | | |ELSE | | |RESULT = False | | |ENDIF | |ENDIF |ENDIF FEND ------------------------------
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:56:33.03 ID:uvOD7Pon0.net] 引数以外の継承したい変数をPUBLICにするとか参照渡しにして ABC各処理を別関数に 関数A 関数B 関数C ABC全部処理する関数ABC BとCだけ呼ぶ関数BC みたいに呼べばいいんでないの
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:58:10.02 ID:657cwzrg0.net] ・継承という用語はプログラミングにおいて特別な意味を持つので別の表現を使うべし。 ・サンプルプログラムの条件分岐に既に無意味な部分がありどうしたいのかが読み取れない。 今の状態だと
532 名前:7,11-12行目は絶対に実行されない。 ・引数第4項が戻り値であるにもかかわらずvar宣言がない、関数内でも使われていない。 実行され得ない部分を削って最適化するとこんな感じ。やっぱり意図がわからない。 FUNCTION doABC(Aへの引数, Bへの引数, Cへの引数) RESULT = False IFB !Aへの引数=0 doA(Aへの引数) ELSE doB(Bへの引数) IFB !Bへの引数=0 doC(Bへの引数) ELSE doC(Cへの引数) ENDIF RESULT = True ENDIF FEND [] [ここ壊れてます]
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:58:53.91 ID:657cwzrg0.net] 要件ベースでまとめると、 (1) Aへの引数のみ指定すると、doA(Aへの引数), doB(Aへの引数), doC(Aへの引数) の順で実行 (2) Bへの引数のみ指定すると、doB(Bへの引数) のみ実行 (3) Cへの引数のみ指定すると、doC(Cへの引数) のみ実行 解1 関数 doA(paramA), doB(paramB), doC(paramC) を定義し、 関数 doABC(paramABC) 内で上記関数を使用する。 (1)はdoABC(Aへの引数) , (2)はdoB(Bへの引数) , (3)はdoC(Cへの引数) を実行する。 解2 各ケースをあくまで一つの関数にまとめ、引数の指定の仕方のみで制御したい場合。 PROCEDURE doABC(Aへの引数, Bへの引数, Cへの引数) RESULT = False IFB !Aへの引数=0 doA(Aへの引数); doB(Aへの引数); doC(Aへの引数) ELSE IFB !Bへの引数=0 doB(Bへの引数) ELSEIF !Cへの引数=0 doC(Cへの引数) ENDIF ENDIF FEND メリットは特に無い。
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 18:43:19.51 ID:T9ZC/Zyz0.net] >>498-500 ありがとう >>500 ごめんなさい、勘違いしてた 関数の中に関数入れて呼び出すとエラーになる気がしてたけど違ったみたい 素直に解1の方法でやります
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 19:45:49.25 ID:y9zJENvU0.net] hashtbl lists lists["あ"] = "a10 a20 a30" lists["い"] = "b100 b200" lists["う"] = "c1 c2 c3 c4" //上記の場合3*2*4=24通りの全組み合わせを出力するprintCombination //あ=a10, い=b100, う=c1 //・・・ //あ=a30, い=b200, う=c4 printCombination(lists) procedure printCombination(lists[]) product = 1 for key in lists product = product * length(split(lists[key])) next for i = 0 to product - 1 q = i hashtbl outHash for key in lists values = split(lists[key]) r = q mod length(values) q = int(q / length(values)) outHash[key] = key + "=" + values[r] next print join(outHash, ", ") next fend
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 19:54:28.61 ID:y9zJENvU0.net] 質問です printCombinationという関数を書いてみたんですが、 もっとスマートな方法ないでしょうか? やりたいことはコメントに書いてあるとおりです すべての組み合わせを出力したい(もちろん別の組み合わせでも動くような感じで)
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 20:28:28.46 ID:KECwy5hV0.net] これじゃいかんのか? DIM ary1[2] = "a10","a20","a30" DIM ary2[1] = "b100","b200" DIM ary3[3] = "c1","c2","c3","c4" for a1 in ary1 for a2 in ary2 for a3 in ary3 print a1 + a2 + a3 next next next どうしてもハッシュ使いたいなら上の三行で配列宣言したあとにハッシュリストからsplit使って配列にぶっこめばええんちゃうん
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 22:06:55.05 ID:7q7uQHpo0.net] 帰宅中に松屋で飯食いながら考えた。 hashtbl lists lists[
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 22:09:05.76 ID:7q7uQHpo0.net] 帰宅中に松屋で飯食いながら考えた。 hashtbl lists lists["あ"] = "a10 a20 a30"; lists["い"] = "b100 b200"; lists["う"] = "c1 c2 c3 c4" const SPLT_V = " "; const SPLT_R = "<#CR>"; const SPLT_C = ", " print structCombinationCSV(lists, 1) function structCombinationCSV(lists[], cu
540 名前:rLv) key = lists[curLv-1, HASH_KEY] curRows = split(lists[curLv-1, HASH_VAL], SPLT_V) combinationCSV = "" ifb curLv >= length(lists) then for curIdx=0 to length(curRows)-1 combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_R next else childRows = split(structCombinationCSV(lists, curLv+1), SPLT_R) for curIdx=0 to length(curRows)-1 for childIdx=0 to length(childRows)-1 combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_C + childRows[childIdx] + SPLT_R next next endif result = combinationCSV fend っしゃぁ! [] [ここ壊れてます]