AutoIt 事實上沒什麼資料型態可言,這點和 C 語言差很多,基本上只有數字、字串、布林、二進位、指標這幾種而已。不過這幾種變數轉換方式非常直接,大多不需要經過什麼特別函式就可以直接轉換。

這裡要先說, autoit 的分號代表整行註解。

0. 變數(Variable)

不管什麼型態變數,所有的變數都是用 $ 開頭宣告,而且使用前可以不必事先宣告。但我較習慣事先宣告,所以宣告下來可能就變這樣:

Local $a, $b, $c
Gobal $X, $Y, $Z

這裡的 Local 和 Gobal 本文最後會說明。

1. 數字(Number)

只要沒用大括號連起來的大多都是數字,如 10   20   30  這三個都是數字,所以 10*20 會被當作是數字在處理。然而總有特例,如 "10" * "20",中間是乘號,會把 "10"、 "20" 先轉成數字,最後相乘後又傳回一數字。然而 AutoIt 存整數時可分成 Int32 與 Int64,至於浮點數時應都存成倍精度浮點數。

另數字不只十進制表示法,還可支援科學符號 (1.23e3) 與 16進制表示法 (0x1213)。

2. 字串(String)

AutoIt 中,字串、字元、整數、浮點數的觀念沒有非常明顯,可內含的字串最高 2147483647 字元。所謂的字串只要用雙引號或單引號引起來的都叫字串。如 "EdisonX",這是一個字串;又如 'EdisonX' 也是一個字串,至於若要表達一個雙引當字串內容,就連打二個雙引;表達一個單引當內容,就連打二個單引。如

$Str1 =  " 加入單''引號'' "
$Str2 =  " 使用雙""引號"" "

3. 布林(Bool)

這點和 C++ 倒是沒什麼不同。bool 變數可支援 logic operator,如 AND OR NOT .. etc,宣告使用如下

$bool1 = true
$bool2 = false
$bool3 = $bool1 AND $bool2

4. 二進位 (Binary)

這部份有程式底子的人可能要想一下,它的運作機制和一般的 C/C++ 有些不同。二進位類型可以存任何位元值,存成字串後就會變成 16 進位文字 (當然到時要把文字轉整數又是件簡單的事),可內含的上限最高 2147483647 位元組。如

$bin = Binary("abc")
$Str = String($bin) ; 將 $bin 轉成 0x616263 後存於 $Str 內。

5. 指標 (Pointer)

我必須說,事實上 AutoIt!! 根本沒有指標的概念,裡面它用到的頂多是類似 HWND 這種東西,我仍不覺得它是指標。不過既然說明書上硬要說它是指標,我也只好尊重他們了。

6. Local 與 Gobal

Local 和 Gobal 是指定變數的有效範圍,一開始可以不用指定這二個變數,而且寫 AutoIt 的人似乎也不常指定;事實上 Local 就是 C/C++ 的區域變數,而 Gobal 就是 C/C++ 的全域變數;如果沒學過 C/C++,這部份日後會再為各位解說。

7. MsgBox

為了日後說明方便,我們先講這個函式 - MsgBox,這裡只是講簡單的用法,其它的用法有興趣請查使用手冊。

MsgBox(種類, 抬頭文字, 內容文字, 逾時, 主控碼)

實際上在用的時候根本用不到這麼多,只需要前三個參數就可以了。而 MsgBox 的種類是以一整數去決定,其所代表意義如下所示

十進位旗標 相關按鈕結果 十六進位旗標
0 確定按鈕。 0x0
1 確定和取消。 0x1
2 終止、重試和忽略。 0x2
3 是、否和取消。 0x3
4 是與否。 0x4
5 重試和取消。 0x5
6 ** 取消、重試、繼續。 0x6

至於MsgBox 會傳回什麼值,是根據使用者按下什麼鍵決定的。傳回值如下

按下的按鈕 返回值
確定  1
取消  2
放棄  3
重試  4
忽略  5
是的  6
 7
重試 ** 10
繼續 ** 11

於是我們可以寫下一個範例

$Title = "Title" ; 抬頭文字
$Context = "內文" ; 內文文字
$Ret = MsgBox(3, $Title, $Context)

edisonx 發表在 痞客邦 PIXNET 留言(3) 人氣()


留言列表 (3)

發表留言
  • 悄悄話
  • 林信宏
  • 您好 , 不好意思 想請問一下
    AutoIT
    我宣告密碼
    $password = String("Password#1")
    但因為 # 為字串函數
    我試過以下
    "Password"+#+"1"
    "Password"'#'"1"
    皆無法
    有宣告方式可以把它改成非字串嗎
    不好意思 麻煩了
  • 悄悄話

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼