Giới thiệu Avenue Avenue là gì? Avenue là ngôn ngữ lập trình và môi trường phát triển, là một phần ArcView. Cách làm việc với Avenue Avenue là một ngôn ngữ kịch bản hướng đối tượng(objectorient scripting). Điểm mạnh trong Avenue, tất cả hệ thống đều là hướng đối tượng, đều nhận là đối tượng và rồi gửi “request”. Trong Avenue, thay vì gọi các function với các đối số khác nhau, bạn có thể gửi một request tới một đối tượng. Một đối tượng nhận request này thi hành một số hành động
Các nguyên tắc cơ bản khi làm việc với Avenue (Working with Avenue: Fundamentals) Các câu lệnh trong Avenue Câu lệnh gán Biến cục bộ và biến toàn cục Câu lệnh If Then Else Câu lệnh lặp For Each Câu lệnh Exit Câu lệnh Continue Câu lệnh Break Câu lệnh Return Các kiểu dữ liệu trong Avenue Giới thiệu Avenue Avenue là gì? Avenue là ngôn ngữ lập trình và môi trường phát triển, là một phần ArcView. Cách làm việc với Avenue Avenue là một ngôn ngữ kịch bản hướng đối tượng(object-orient scripting). Điểm mạnh trong Avenue, tất cả hệ thống đều là hướng đối tượng, đều nhận là đối tượng và rồi gửi “request”. Trong Avenue, thay vì gọi các function với các đối số khác nhau, bạn có thể gửi một request tới một đối tượng. Một đối tượng nhận request này thi hành một số hành động Câu lệnh gán Câu lệnh gán chức năng gán kết quả – luôn là đối tượng – tới một biến. Các biến trong Avenue không được khai báo hoặc định kiểu. Biến được tạo khi xuất hiện bên trái của toán tử bằng (=) trong câu lệnh gán. Bên phải toán tử gán được nhận biết đối tượng tham chiếu tới Cú pháp: variable = Object Tên biến bắt đầu với ký tự hoặc dấu gạch dưới. Sau đó có thể là các ký tự và các số ([a-zA-Z][0-9a-zA- Z]*). Biến cục bộ và biến toàn cục Tên các biến phải là duy nhất. Một biến tham chiếu một đối tượng. Một biến được tạo khi xuất hiện bên trái của câu lệnh gán. Ví dụ theView = av.GetProject.FindDoc( "View1" ) if (theView <> nil) then theView.SetName( "States") End Toán tử “=“ cũng là toán tử so sánh. Biến cục bộ và biến toàn cục Biến cục bộ Chỉ tồn tại trong script bạn tạo. Biến cục bộ được giải phóng khi script này kết thúc. Biến toàn cục Bắt đầu bằng ký tự gạch dưới (_). Biến được tạo trong lần đầu tiên xuất hiện bên trái toán tử gán. _myDictionary = Dictionary.Make( 100 ) Mặc định, ArcView xóa các biến toàn cục khi bạn mở một một Project hoặc tạo mới một Project. Nếu bạn xóa một biến toàn cục rồi chạy đoạn script bạn sẽ nhận lỗi "The global variable <name> no longer exists." Nếu bạn thử dùng một biến toàn cục trước khi bạn khởi tạo bạn sẽ nhận một lỗi biên dịch Câu lệnh If Then Else Dạng 1: if ( expression1 ) then request block1 end Dạng 2: if ( expression1 ) then request block1 else request block2 end Dạng 3: if ( expression1 ) then request block1 elseif ( expression2 ) then request block2 [else] request block3 end Ví dụ Ví dụ 1 kiểm tra điều kiện đơn giản: if (result = nil) then return nil end Ví dụ 2 kiểm tra hai điều kiện if (theView.GetThemes.count = 0) then MsgBox.Info( "there are no themes", "") elseif (theView.GetActiveThemes.count = 0) then MsgBox.Info( "there are no active themes", "") end Ví dụ 3 Maximizes môt View nếu đang được chọn, hiện ra thông báo nếu đó là Project đang được chọn, và đóng cửa sổ nếu là loại khác. if (av.GetActiveDoc.Is( View )) then av.GetActiveDoc.GetWin.Maximize elseif (av.GetActiveDoc.Is( Project ) then MsgBox.Info( "Please open a view", "") else av.GetActiveDoc.GetWin.Close end Câu lệnh For Each for each variable in collection [ by increment ] request block end Example for each i in 1 100 MsgBox.Info( i.AsString, "") End theView = av.GetActiveDoc for each t in theView.GetActiveThemes t.EditTable end Câu lệnh Exit Chức năng kết thúc tất cả các scripts. Câu lệnh Exit Ví dụ: Script kết thúc nếu tên thư mục không ghi được. newDir = MsgBox.Input( "Specify directory", "Directory", "") if (newDir = nil) then exit elseif (newDir.AsFileName.IsDir.Not) then MsgBox.Error( newDir.AsFileName.GetFullName++"is not a directory", "") exit elseif (File.IsWritable(newDir.AsFileName).Not) then MsgBox.Error( newDir.AsFileName.GetFullName++"is not writable", "") exit else theProject.SetWorkDir( newDir.AsFileName ) end [...]... một khoảng trắng giữa hai chuỗi String String có các phương thức : Contains, Count and IndexOf … So sánh hai chuỗi dùng các toán tử: =, , = Chuyển đổi đối tượng string tới đối tượng khác trong Avenue với các phương thức: AsAscii, AsFileName, AsList, AsNumber, AsDate, AsTime, AsEnum, AsToken Bạn có thể thực thao tác với string cùng các phương thức: BasicProper, Extract, Lcase, Left,... True hoặc False Được sử dụng trong kiểm tra biểu thức điều kiện của các câu lệnh như If(expression) hoặc While expression Ba từ khóa hữu ích trong việc kết hợp các biểu thức là: and, or, not String String là một chuỗi các ký tự có độ dài cố định Chuỗi được phân cách bởi ký tự “ myString = “Hello World” String có thể bao gồm các ký tự đặc biệt NL: newline TAB: tab CR: Carriage return myString... Trong Avenue, biểu thức tính toán được thực hiện từ trái qua phải x = 5 + 3 * 3 theo bạn kq là 14 hay 24 Dùng dấu ngoặc để thực hiện thứ tự ưu tiên của biểu thức: x = 5 + (3*3) Avenue sử dụng ký hiệu dạng hậu tố cho các phương thức để thực hiện các chức năng kiểu số x = -7.abs Chuyển đổi tới các đối tượng kiểu khác: AsString, Asdays, AsYears, AsHours, AsMinutes, Number Một khoảng các giá trị... av.run("GetAction", "Green") msgbox.info(results, "Driving Instructions") Giá trị trả về khi gọi script trên 'script "GetAction" if (Self = "RED") then return "Stop" elseif (Self = "Green") then return "GO" else return "Use caution" end Câu lệnh While Lặp lai công việc nào đó khi biểu thức điều kiện là true Với vòng lặp While phải đảm bảo điều kiện dừng sai một một số vòng lặp hữu hạn Câu lệnh while... Sin : Number Sqrt : Number Tan : Number Truncate : Number Dates và Time Các đối tượng Date có thể chứa ngày tháng hiện tai hoặc ngày tháng chỉ định với một định dạng nhất định today = Date.Now today.SetFormat( "M, d, yyyy" ) MsgBox.Info( today.AsString, "") today.SetFormat( "dddd MMMM d, yyyy" ) MsgBox.Info( today.AsString, "") Các định dạng Date M - the month as an integer from 1 to 12 MM - same as... is"++num.asString,"ArcView Example") end msgbox.info( "Complete", "") Câu lệnh Return Có thể dùng để trả về một đối tượng khi gọi Script Dùng câu lệnh Return để kết thúc thực thi script hiện tại Cú pháp return anObject Ví dụ Ví dụ 1: dùng câu lệnh Return thay vì dùng câu lệnh Exit để kết thúc Script trừ khi bạn gặp những lỗi nghiêm trọng MyView = av.GetProject.FindDoc( "View1" ) if (myView = nil) then MsgBox.Error(...Câu lệnh Continue Chức năng bỏ qua lần lặp trong câu lệnh lặp, nó bỏ qua các câu lệnh còn lại trong vòng lặp Câu lệnh continue Ví dụ Script kiểm tra mỗi trường của mỗi Theme trong View, nếu trường hiện tại là kiểu số thì sẽ bỏ qua, bằng cách nhảy qua request SetVisible theView = av.GetActiveDoc for each t in theView.GetThemes for each f in t.GetFtab.GetFields... : String AsYears : Duration Number Các toán tử Number * anotherNumber : + anotherNumber : - anotherNumber : / anotherNumber : Negate : Number ^ anotherNumber : Number Number Number Number Phân loại Number Number = anotherNumber : Boolean IsInfinity : Boolean IsNull : Boolean Max anotherNumber : Number Min anotherNumber : Number Number Các hàm Number ... t.GetFtab.GetFields if (f.IsTypeNumber) then continue end f.SetVisible(true) end t.GetFtab.Refresh end Câu lệnh Break Chức năng kết thúc thực hiện trong các câu lệnh lặp For Each hoặc While Cú pháp break Chú ý: Câu lệnh Break chỉ hợp trong vòng lặp For Each hoặc While Ví dụ Khi biến đếm = 5 thì kết thúc vòng lặp Câu lệnh tiếp theo được thực thi sau câu lệnh Break là câu lệnh in ra thông báo “Complete” for each... specific time zone string ITZ - ISO format time zone string (+0800, -0500, etc.) Ex: 2DaysAgo = today - 2.AsDays today.IncrementByDays(-2) 3DaysFromToday = today + 3.AsDays today.IncrementByDays(3) Các phần tham khảo Lists Dictionaries Stacks Enumerations Object tags SELF Nil Message Boxes . Các nguyên tắc cơ bản khi làm việc với Avenue (Working with Avenue: Fundamentals) Các câu lệnh trong Avenue Câu lệnh gán Biến cục bộ và biến. lệnh Return Các kiểu dữ liệu trong Avenue Giới thiệu Avenue Avenue là gì? Avenue là ngôn ngữ lập trình và môi trường phát triển, là một phần ArcView. Cách làm việc với Avenue Avenue là một. có các phương thức : Contains, Count and IndexOf … So sánh hai chuỗi dùng các toán tử: =, <, >, <=, >=. Chuyển đổi đối tượng string tới đối tượng khác trong Avenue với các