1. 善用內建函式庫

事實上 AutoIt 已提供了非常多的現有函式庫,要去調用時,必須知道那些現有函式是存在於哪些函式庫裡。而這些現有函式庫,在安裝時都已安裝於 C:\Program Files\AutoIt3\Include (筆者電腦之作業系統為 XP,AutoIt 版本為 3.3) 。而要調用這些現有的函式庫,可加上這麼一段敘述

#include <函式庫名>

以 Array.au3 為例,若要調用 C:\Program Files\AutoIt3\Include 裡面內附的 Array.au3,則這麼使用

#include <Array.au3>

其它的就是看說明書去使用 Array 這個物件(相當於 MFC 的 list-view)。這裡只簡單的加入一些項目後,將它顯示出來。測試用的原始碼如下

#include <Array.au3> ; 引入 Array.au3 函式庫

Local $Number[10]
     _ArrayDisplay($Number, "加入前")

For $i=0 To 9
      _ArrayAdd($Number, $i+1)
Next
_ArrayDisplay($Number, "加入後")

執行結果如下

Array-01.pngArray-02.png 

對於執行結果與程式碼有興趣者,可先自行研究 Array.au3 之其它函式。

2. 自定義函式庫

之前我們有談到 自定義函式 的問題,一旦自己寫的函式多了起來,而且日後使用到的機會一多的話,這時便可考慮將這些自定義函式寫成一個函式庫的檔案,到時再接著引用。現在假設寫了一個 MyMath.au3,內容如下

; FileName : MyMath.au3

; ======================================
; 1+2+...+N
; ======================================
Func Sum1N($N)
        Dim $i=0, $sum=0
        For $i=1 To $N
                $sum = $sum  + $i
        Next
        return $sum
EndFunc

; ======================================
; 1^2  + 2^2 + ... + N^2
; ======================================
Func Sum1N2($N)
        Dim $i=0, $sum=0
        For $i=1 To $N
                $sum = $sum  + $i^2
        Next
        return $sum
EndFunc

; ======================================
; Swap
; ======================================
Func Swap(ByRef $a, ByRef $b)
        $t = $a
        $a = $b
        $b = $t
EndFunc

接著若在 Sample.au3 裡面調用這個 MyMath.au3 裡面的 Swap 函式,要注意的是,這裡的 Sample.au3 和 MyMath.au3 是放在同一目錄底下。寫法如下

; FileName: Sample.au3

#include "MyMath.au3"

Dim $a = 5, $b = 10
Swap($a, $b)
MsgBox(0, "a value", "a=" & $a)
MsgBox(0, "b value", "b=" & $b)

在此注意到,include 使用角括號 「#include <...> 」和使用雙引號 「#include "..."」有所不同。使用角括號是直接只到安裝 AutoIt 時的 include 目錄底下(筆者為 C:\Program Files\AutoIt3\Include)去搜尋該 .au3 檔案,調用其函式庫;然而使用雙引號是先去現在的目錄底下搜尋該 au3 檔案。當然也有人直接把自己常用到的函式寫好,檔案直接丟到安裝目錄底下,這樣就一律都用角括號,不過這不是聰明的做法,因為自己寫的可能會有隱藏性問題而不自知。

3. 重覆 include 問題

剛我寫了一個 MyMath.au3,假設我又寫了一個 MyMath2.au3,包含了 MyMath.au3,接著 Sample.au3 又包含了 MyMath.au3 與 MyMath2.au3,關係如下整理

MyMath2.au3 -> 包含 MyMath.au3
Sample.au3 -> 包含 MyMath.au3, MyMath2.au3

這時在執行時便會發出類似這種錯誤訊息:MyMath2.au3 被重覆 include ,原因是因為所有的函式庫一次只能被 include 一次。為避免這種情形發生,於是我們在 MyMath.au3 與 MyMath2.au3 前面一律加上這種東西

#include-once

 這樣便可避免掉 MyMath.au3 與 MyMath2.au3 被重覆 include 之問題。

 

arrow
arrow
    全站熱搜

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