- 自動化ツールuwsc使いよ集まれ7
428 :名無しさん@お腹いっぱい。[sage]:2011/12/04(日) 15:19:27.08 ID:/9Bgp8pL0 - >>426
if peekcolor(446,182)=$FFFF then 〜 だと複数回チェックする時に状態反転してるのに同じ物を検出条件にしてますよね? その間に状態が変わって反転してるかもしれないのでこれだと誤作動です フラグが反転すると今度は$FFFFを検出しない状態でthen〜を実行して欲しいんです フラグの状態を無視してると言うのが力不足で理解出来ません。良ければその理由を指摘いただけませんか? >>427 画面の更新タイミングがずれる時(他アプリの起動や描画時間がかかるアプリ、windowsの画面更新そのものが止まる状況、画面上に別アプリを起動した時にそのウインドウが(446,182)の座標に被った場合など) 描画が止まったりすると1回の判定だと当然誤作動するんです。誤動作のタイミングがそれ以外にも色々あるので不定です then〜はエラー復帰と考えていただければ分かりやすいと思います その判定の為に何回かPEEKCOLOR(446,182)を繰り返してます
|
- 自動化ツールuwsc使いよ集まれ7
430 :名無しさん@お腹いっぱい。[sage]:2011/12/04(日) 16:37:31.86 ID:/9Bgp8pL0 - >>429
thread処理じゃないのでこのコードが同じになるのは分かります 実際に動かしました。仰るようにthread処理でフラグが変えられた場合のテストコード書いてみます
|
- 自動化ツールuwsc使いよ集まれ7
433 :名無しさん@お腹いっぱい。[sage]:2011/12/04(日) 17:30:39.85 ID:/9Bgp8pL0 - 今必死に理解に勤めてます
threadであろうがやっぱり同じになると思います。でも何故そうなるか分かりません 数学の証明問題を解いてる気分です もうちょっと頑張りたいと思います。皆さん本当にありがとうございます
|
- 自動化ツールuwsc使いよ集まれ7
434 :名無しさん@お腹いっぱい。[sage]:2011/12/04(日) 18:04:04.92 ID:/9Bgp8pL0 - ごめんなさい。やっと理解できました。根本的に間違ってたようです
IF (test_flag xor PEEKCOLOR(446,182))=($FFFE or (test_flag xor 1)) then その後の処理 は単に IF peekcolor(446,182)=$FFFF then を分かりにくくしただけで、式そのものが間違いと言う事に気付きました ちゃんと動いた事があるのはうまい具合に(意図したように)誤作動してたんだと思います 本来チェックしたい条件とは逆の判定をflagによって行ってた threadだろうが、そうでなかろうが結果が同じになるということがやっと分かりました IF peekcolor(446,182)=$FFFF thenを因数分解した様な式で分かりにくくなっただけでflagの値が何であれ判定条件は同じ if peekcolor(446,182)=$FFFF xor test_flag then 〜 じゃないとまともに動かない。何故間違ってるのかに気付くまで時間かかりましたがご指摘、本当にありがとうございました
|
- 自動化ツールuwsc使いよ集まれ7
435 :名無しさん@お腹いっぱい。[sage]:2011/12/04(日) 18:17:37.85 ID:/9Bgp8pL0 - 連投失礼します
今回、if文は本来チェックしたいものをチェックして、フラグで条件が違うならそれでテストする if 真xor真 これは偽 if 真xor偽 これは真 と言う事を改めて学ばせていただきました。本当にありがとうございます。上みたいにもっとシンプルに考えればよかったんですね 基本に立ち帰りました 理解に協力していただいた皆様に本当に感謝いたします。ありがとうございます 嬉しい事があると話が長くなるタイプなので長文失礼致しました
|