Autoit : まぎらわしい文法とよくやるミスとエラー

エラーはなぜ発生

オンラインルーレットで画像認識試してみようと思ったら、エラー自分なりの解決法はあっているかどうかわかりませんが、下の方に書いてあります。和ツィがよくやるミスはコードの中に全角空白を入れてしまいます。
AutoitはBasic言語のような文法のスクリプトです。

Autoit本家英語サイト:

インクルード・ファイルに関数以外あると、実行されてしまう

上の画像が #include “dd.au3″ で取り込むと
includeファイルに関数以外が含まれていると、先に実行されます。
Func~EndFunc 以外を書いてしまうと、プログラムの見通しが悪くなってしまう。

関数の外になにか書かないように

window 位置(左上XY座標)を変えずに大きさ変更

WinMove(“notepad”,””,,,200,300)

XYの座標入れなければ今の位置かと思いましたがエラー

WinMove(“[active]”,””,default,default,200,300)

xyのところにdefault」入れないとだめ

テキストファイルの読み込み 最初の行は1

FileReadLine ( “filehandle/filename” [, line] )

lineは数値で、1からスタート

配列のように最初は「0」ではない。

文字列分割 >数値、注意すること(半角の空白)

文字列: 32, 11, 5, 23,
分割すると「□32」「□11」「□5」「□23」
空白+数値の形になるので、空白を取り除かないと比較できません。

Local $clp = ClipGet()
$clp = StringStripWS($clp,8) ;空白取り除く
$arClp_spilit = StringSplit ( $clp, ",")
_ArrayDelete($arClp_spilit,0) ;文字総数[0] 削除

StringStripWS($clp,8)

これで、すべての空白取り除きます。

MsgBoxが表示されると、座標系が変わるみたい

MsgBox("","", $arrNum_36[$i][2],2)
MouseMove($x-$XBASE,$y-$YBASE)

MsgBoxが表示されると、次の移動が相対座標ではなく。絶対座標になっていた。

どうしてなるのか理由は、わかりません。
Windowが増えるので、そちらに座標が写ってしまう。

画像認識でエラー エラーメッセージ:If $result[0]=”0″~~

(1) 関連付けを「Autoit3_x64.EXE」にする

このエラーが出たら。AutitのEXEを別のに変えたら直りました。

x64にしたら、エラー消えました。

長い命令文を複数行に書く 半角空白+_

ToolTip($R_4, $XBASE+650, $YBASE+580,"空回し" & $kara_looptime & "回スタート!")

命令文の途中に「半角空白とアンダーバー」を入れEnterで複数行にします。

    ToolTip($R_4, $XBASE+650, $YBASE+580, _
        "空回し" & $kara_looptime & "回スタート!")

Func _get_hitNum($col = 2) 引数の初期値を設定する

関数の引数、初期値を設定する

$col =2

_get_hitNum()

関数に引数つけないときは、自動で2が使われる。

計算が合わないとき、変数のスコープをCheck

変数のGlobal Local の区別に注意しましょう。

配列宣言以上は、エラーになる

Global $arrTest[10]

$arrTest[10] = 33

これはエラーになります。
10個の配列で、最後のindexは「9」

10ではなく「-1」の9

配列の別記事:

配列説明

inputBoxにSend(“^v”)働くわけがない

inputBox()は入力待ちで、その後のスクリプトは実行されない。

どうしても、貼り付けがしたい場合は別のスクリプトを動かし、そこでSend(“^v”)すれば貼り付けることできます。

SplashOff は SplashTextOn がないとだめ

SplashOffを「SplashTexOn」ないのに使うと,Txtを探し続けてしまう。

変数宣言 初期値ないと何になる

Global $sam

MsgBox("","",Number($sam))

この「$sam」数値にすると「0」になります。

Global $sam
MsgBox("","",$sam)

これは、文字列の””になります。

これらを条件文(If)などに使えば「false」として判定されるようです。

コメント

タイトルとURLをコピーしました