Tải bản đầy đủ (.ppt) (30 trang)

Các nguyên tắc cơ bản khi làm việc với phần mềm avenue

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (972.47 KB, 30 trang )



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

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
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 num in 1 10

if (num = 5) then
break
end
msgbox.info("Num 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( "couldn't find view", "")
return nil
end

Ví dụ 2: Một script gọi một script khác và nhận giá trị trả về.
'calling script

results = 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 ( expression)
request block
end

Ví dụ

Ví dụ thông báo người sử dụng, nếu người sử dụng chọn Yes
thì biểu thức = true và ArcView chạy script TestScript.
while (msgbox.yesno("Run the script again?","ArcView",TRUE))

av.Run("TestScript",nil)
'TestScript is another script created in the same project.
end

Có thể dùng câu lện Break để kết thúc vòng lặp.
while (true)
again = MsgBox.YesNo( "do it again", "DO IT", TRUE )
if (not again) then
break
end
end

Biểu thức Boolean

Biểu thức Boolean mang một trong hai giá trị 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 = “Hello World” + NL + “Have a Nice Day”

Cộng hai chuỗi dùng toán tử: + hoặc +
+. Toán tử ++ chèn thêm 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, Middle,
Proper, Right, Translate, Trim, and Upcase

Number

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ị số
I = 1 25

Định dạng số
Chữ d miêu tả dạng số
Example: “d.dd”
Định nghĩa một định dạng kiểu số cho ứng dụng
Number.SetDefFormat(“d.ddd”) ‘app defalt
aScript.SetNumberFormat(“d,ddd’)’Script default
aNumber.SetFormat(“dd”) ‘object
Bỏ định dạng
aNumber.SetFormat(“ ”)

Number


Các request number

GetDefFormat : String

GetEuler : Number

GetPi : Number

MakeNull : Number

MakeRandom ( min, max ) : Number

SetDefFormat ( aFormatString )

Định dạng Number

GetFormat : String

SetFormat ( aFormatString ) : Number

SetFormatPrecision ( num ) : Number

Number

Chuyển đổi dạng Number (convert)

anotherNumber : Interval

@ Y : Point


AsChar : String

AsDate : Date

AsDays : Duration

AsDegrees : Number

AsHexString : String

AsHours : Duration

AsMinutes : Duration

AsRadians : Number

AsSeconds : Duration

AsString : String

AsYears : Duration

Number

Các toán tử Number

* anotherNumber : Number

+ anotherNumber : Number


- anotherNumber : Number

/ anotherNumber : Number

Negate : Number

^ anotherNumber : Number

Phân loại Number

= anotherNumber : Boolean

IsInfinity : Boolean

IsNull : Boolean

Max anotherNumber : Number

Min anotherNumber : Number

×