1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hướng dẫn Tổng hợp một số mẹo dành cho người mới học AutoIt

Thảo luận trong 'Hướng dẫn - Bài tập căn bản' bắt đầu bởi yutijang, 26/3/22.

  1. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    110
    Đã được thích:
    61
    Bài viết này mình sẽ tổng hợp một số mẹo cơ bản dành cho người mới học AutoIt, từ nguồn autoitscipt.com
    Sẽ có vài cái không chính xác cũng bởi vì đây là thông tin tổng hợp, chứ không phải do mình nghiên cứu chuyên sâu mà cho ra kết quả.

    - Về sử dụng hàm, nếu trong hàm có sử dụng macro @error thì nên có dòng kiểm tra lỗi @error trước khi dùng Return để trả về giá trị. Bởi vì nếu có phát sinh lỗi (@error = 0) thì hàm sẽ trả về giá trị không xác định.

    - Sử dụng tiền tố trong việc đặt tên biến, điều này giúp ích cho bạn đọc lại code.
    Ví dụ: khi bạn nhìn thấy biến $aDanhSach, bạn dễ dàng nhận ra nó là biến kiểu mảng. Hoặc bạn sẽ biết biến $sTieu_De_Cua_So_Game là 1 biến kiểu chuỗi.

    Nên đặt tên biến theo qui cách
    Ví dụ: 1 biến có dạng $ahCuaSoLamViec
    Trong đó:
    • $: tiền tố theo qui định đặt tên biến
    • a: kiểu của biến, (dạng mảng (array)), viết thường
    • h: kiểu phụ (handle), tùy chọn có hoặc không, viết thường
    • CuaSoLamViec: tên biến, viết hoa chữ cái đầu tiên
    Vậy khi nhìn thấy $ahCuaSoLamViec, bạn dễ dàng nhận biết đó là là biến dạng mảng, chứa danh sách các handle của cửa sổ làm việc
    Bảng qui tắc:
    Mã (AutoIt):

    #cs
    Tiền tố                    Kiểu                                Ví dụ
        a            Mảng                              $aArray[0]
        b            Logic (True/False)                $bBool = True
        d            Nhị phân                          $dBinary = Binary("0x80000000")
        e            Hằng số                           Local Const $eEulersConstant = 2.7182818284590452
        f            Số thực (Float)                   $fFloat = 0.123
        h            Handles                           $hGUI = GUICreate("My GUI")
        i            Số nguyên                         $iInteger = 10
        id           ControlID                         $idButton_Ok = GUICtrlCreateButton("OK", 5, 5)
        m            Maps                              $mMap[] (Xem thêm: https://www.autoitscript.com/autoit3/docs//functions/Map%20Management.htm)
        n            Số chung chung                    $nNumber = 0
        o            Objects                           $oExcel = ObjCreate("Excel.Application")
        p            Con trỏ (Pointers)                $pRect = DllStructGetPtr($tRECT)
        s            Chuỗi (bao gồm kiểu ký tự)        $sString = "Hello world"
        t            Cấu trúc                          $tSTRUCT = DllStructCreate($tagSTRUCT)
        tag          Định nghĩa một cấu trúc           $tagDATE = "struct; word Year;word Month;word Day; endstruct"
        v            Khác (Không/khó phân loại)        $vData = ClipGet()
    #ce

     
    - Các kiểu của biến có giá trị mặc định, khuyến khích khi khai báo biến nên gán luôn giá trị mặc định cho nó
    Ví dụ:
    Mã (AutoIt):
    Local $bFlag = False
    Local $iInteger = 0
    Local $sString = ""
    Local $dBinary = Binary("")
    Danh sách giá trị mặc định của các kiểu biến
    Mã (AutoIt):

    #cs
    Giá trị mặc định                        Kiểu biến
       Binary("")                     $d
       ""                             $s, $v
       0                              $a, $h, $i, $id, $m, $n, $o, $p, $t, $tag, $v
       0.0                            $f
       Null                           $o, $s, $v
       False (hoặc True)              $b
    #ce

     
    - Về phạm vi của biến, có thể đặt theo qui tắc
    Mã (AutoIt):
    #cs
    Biến toàn cục của UDF        Biến toàn cục (Global)        Biến cục bộ (Local)
        $__g_iSomeVar                $g_iSomeVar                    $iSomeVar
    #ce
    - Về tốc độ:
    • Vòng lặp For...Next là nhanh nhất, kế đến là Do...Until, sau cùng là While...Wend
    • If $bValue Then nhanh hơn If $bValue = 1 Then hoặc If $bValue = True Then
    • If $bValue = 1 Then nhanh hơn If $bValue = True Then
    • If Not $bValue Then nhanh hơn If $bValue = 0 Then hoặc If $bValue = False Then
    • If $bValue = 0 Then nhanh hơn If $bValue = False Then
    • Toán tử so sánh >, < nhanh hơn =, >= hoặc <=
    • $i += 1 nhanh hơn $i = $i + 1
    • $i -= 1 nhanh hơn $i = $i - 1
    • $i *= 1 nhanh hơn $i = $i * 1
    • $i /= 1 nhanh hơn $i = $i / 1
    • Nếu kiểm tra 1 biến duy nhất thì dùng Switch...Case...EndSwitch là nhanh nhất, kế tiếp là Select...Case...EndSelect, chậm nhất là If...Then
    • Nếu $sValue là dạng chuỗi thì If Not $sValue Then sẽ nhanh hơn If $sValue = "" ThenIf $sValue Then sẽ nhanh hơn If $sValue <> "" Then
    • Khi làm việc với biến kiểu nhị phân thì If $dValue - 128 > 0 Then sẽ nhanh gấp đôi If BitAnd($dValue, 128) Then
    • Sử dụng hệ cơ số 16 (Hex) sẽ nhanh hơn hệ cơ số 10 (Dec)
    • Sử dụng các giá trị Hex/Dec thông qua biến sẽ làm chậm quá trình thực thi, nếu có thể thì dùng thẳng luôn giá trị trực tiếp mà không cần thông qua biến.
    • Tên biến dài thì quá trình thực thi cũng lâu hơn, vì vậy hãy đặt tên biến sao cho ngắn nhất, gọn ghẽ nhất.
    • StringRegExpReplace() chậm hơn StringReplace(), dùng StringRegExpReplace() khi thực sự cảm thấy cần thiết.
    • Khai báo $vValue = "%TEMP%" kết hợp với Opt("ExpandEnvStrings", 1) sẽ nhanh hơn $vValue = EnvGet("temp") hoặc $vValue = @TempDir
    • $vValue = @TempDir nhanh hơn $vValue = EnvGet("temp")
    • Khai báo $vValue = "$sString$" kết hợp với Opt("ExpandEnvStrings", 1) sẽ nhanh hơn $vValue = $sString
    • $vValue = "@TempDir@" sẽ chậm hơn $vValue = @TempDir
     
    Tungtata thích bài này.

Chia sẻ trang này

Đang tải...