• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UWSの構文についての質問です)

UWSの構文で繰り返しやIFの構文がうまく動作しない

このQ&Aのポイント
  • UWSの構文で繰り返しやIFの構文が上手く動作しないため、作業ができません。
  • 条件に基づいてA画像をクリックしてB画面に遷移し、さらにC画面やD画面に遷移する必要がありますが、正常に動作しないため、エラーが出るとAに戻って最初からやり直しています。
  • 条件の中にも条件があるため、正しい命令のタイミングがわからず、どのタイミングでどの命令をすれば良いか迷っています。ご教授いただければ助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (454/624)
回答No.2

お礼欄のプログラムとフローチャートからすると、こうすればいいと思います。 WHILE TRUE  IFB 画像チェック("A.BMP")   BTN(LEFT,CLICK,G_IMG_X+25,G_IMG_Y+25,20)   IFB 画像チェック("B.BMP")    BTN(LEFT,CLICK,G_IMG_X+25,G_IMG_Y+25,20)    WHILE TRUE     IFB 画像チェック("C.BMP")      BTN(LEFT,CLICK,G_IMG_X+25,G_IMG_Y+25,20)      IFB 画像チェック("D.BMP")       // F5を押しページ更新      ENDIF     ELSE      // タイムエラーでエラー表示      BREAK     ENDIF    WEND   ENDIF  ELSE   // ここに時間切れ処理必要? さもないと無限ループ  ENDIF WEND FUNCTION 画像チェック(bmp)  RESULT = FALSE  WHILE TRUE   IFB CHKIMG(bmp,-1,0,0,1920,1024) > 0    RESULT = TRUE    EXIT   ENDIF   // 時間切れ判定処理 時間切れの時 BREAK か EXIT する  WEND FEND

elpa_01
質問者

お礼

有難うございます! 教えて頂いた方式に時間を見て変えていこうと思います また不明な点などでてきましたら、新しいトピにて質問させて頂きますので よろしくお願いいたします。

その他の回答 (1)

  • luka3
  • ベストアンサー率72% (454/624)
回答No.1

私なら、B以降を関数化して、ダメな条件の場合に関数を抜けるようにします。 Aの処理条件がちょっとわかりにくいので正しいかわかりませんが、こんなかんじになります。 UWSの構文は大文字にしています。 WHILE TRUE  Aの画像を見つけクリックする条件  ○ならクリックして サブ関数へ  ×ならA画像をもう一度画像を探すためAに WEND PROCEDURE サブ関数  Bの条件  ×なら EXIT  (○なので)クリック  WHILE TRUE   Cの条件   ×なら EXIT   (○なので)クリック   Dの条件   ×なら EXIT   (○なので)F5を押して(Cへ)  WEND FEND

elpa_01
質問者

お礼

01  WHILE TRUE 02   WHILE TRUE 03   ifB CHKIMG("A.BMP",-1,0,0,1920,1024) > 0 04    BTN(LEFT,CLICK,G_IMG_X+25,G_IMG_Y+25,20) 05    BREAK 06    Endif 07    WEND 08     WHILE TRUE 09     ifB CHKIMG("B.BMP",-1,0,0,1920,1024) > 0 10     BTN(LEFT,CLICK,G_IMG_X+25,G_IMG_Y+25,20) 11     BREAK 12     Endif 13     WEND 14      WHILE TRUE 15      ifB CHKIMG("C.BMP",-1,0,0,1920,1024) > 0 16      BTN(LEFT,CLICK,G_IMG_X+25,G_IMG_Y+25,20) 17      BREAK 18      Endif 19      WEND 20       WHILE TRUE 21       ifB CHKIMG("D.BMP",-1,0,0,1920,1024) > 0 22       BTN(LEFT,CLICK,G_IMG_X+25,G_IMG_Y+25,20) 23       BREAK 24       Endif 25       WEND 26  WEND 私は上記のように書き込んで、条件に合えばBreakで次の条件へ進むようにしていました BREAKとEndifの行の間に新しい構文を入れ何処かの行から読み直す事が出来ればと思っていました 例:18と19の間に関数を入れ08のスクリプトから開始させる 教えて頂いた中に初めて見る関数があるのでそちらでも可能だと思います ただ、関数が意味するものが解らずまた位置から手探り状態になりそうです CONTINUE  CONTINUE 2 とかで飛ばせるという文を見つけたのですが使い方もわからず途方に暮れています 行き詰まっているので、他の方法を勉強するのもいいですよね! 一度頭の中をクリアし教えて頂いたもので書き換えてみようと思います CONTINUE の使い方や私の書き方で何か気がつく事などありましたら 教えて頂ければ幸いです 有難うございました