注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

chunwaihome 的博客

 
 
 

日志

 
 

Vector  

2010-02-26 09:38:20|  分类: Powerpro Plugin |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 什麼是Vector?

如果您有學過Autoit的話,我相信你應該知道什麼是array(數組),Powerpro的Vector就是Autoit Array的相類似的東西。所謂數組,即為一組變數的集合。其中每個變量稱為Element(數組元素),數組元素可以用相應的索弔序號來訪問。數組的聲明:

v = vec.create(10,5)  ;留意10是10個Elements的意思,5是當10個Elements用完以後您可以再增長5個Elements
v[1] = "apple"
v[2] = "stunning"
win.debug(v[1])        ;結果是"apple"

當你聲明了數組名以後,那麼數組中的變量是以"數組名[0]""數組名[表達式-1]"。另外值得留意的是,數組名后是用方括孤("[ ]")括起來的表達式,不可用其他括孤替代。

   Array 中文譯作陣列, 是指一列, 或多欄和多列, 順序排列的的名單, 而我們可以利用陣列名稱及排序號數來叫用這陣列中的成員 (element)。

  若是單維陣列 (one dimensional array), 就是一列順序的名單, 若是二維陣列 (two dimensional array), 就是列與欄所組成的順序名單, 例如:

成員[0,0] 成員[0,1] 成員[0,2]
成員[1,0] 成員[1,1] 成員[1,2]
成員[2,0] 成員[2,1] 成員[2,2]
成員[3,0] 成員[3,1] 成員[3,2]


 

CREATE


語法:v= vec.create(capacity, growth, minisize)

自訂一個陣列, 然後用排序號數來叫用這陣列的成員。如果growth參數大於" 0 ",陣列的數目會自動增長當你用Insert命令插入新的元素時。如果你設立 " minisize " 參數,所有的元素將會被分配至少該參數的記憶体中。Growth 和 minisize 參數可被省略的, 在此情況下,它們都被假設為 " 0 " 。而 Vector Plugin同一時間最多可以支援" 50 "個元素

 

CreateFromWords


語法:v= vec.createFromWords(string, dchars, growth, minsize)
Creates a vector with one element for each word in the string.  Words are separate by one or more consecutive occurences of any character from dchars (blank and tab if dchars omitted).  The delimiting characters at the end of each word are not stored. 

v=vec.createFromWords("line1  2222\t3")
創造三個元素的Vector ,v[0] 設為 "line1", v[1]設為 "2222", 和 v[2] 設為 "3"。在缺省dchars參數的情況下,元素和元素之間表示以空格或Tab鍵作分隔。

v = vec.createfromwords("3 1 2 4 5 ","",40)      ;
v[5]= time                                ;元素5必須設定,否則元素是不能設立的
v[6]= date
s= v.length
win.debug(v[6])

growth參數設為40,意思是如果有新的元素加入,而它的index是大過vec.length()即例子中的4,它會自動增加index的數目。

 

v=vec.createFromWords(win.handleList("*"))                          
  win.handlelist會得出窗口的handle值,星號表示所有visible窗口,得出handle值以以空間作分隔

  • For Each

 v = "alpha beta gamma"

for each line in v
win.debug(line)
endfor

得出結果

alpha beta gamma

 v = vec.createfromwords("alpha beta gamma")

for each line in v
win.debug(line)
endfor

註:for each會得出所有v[i]的結果,包括v[0],v[1],v[2],v[3].......v[n]

 得出結果

gamma

beta

alpha

  • CreateFromLines 

語法:

v= vec.createFromLines(string, growth, minsize)

Creates a vector with one element for each line in the string.  Lines in string are separate by \n, \r, or the pair \r\n.  The \r or \n at the end of each line is not stored.

創造以行為準則的元素,而在Powerpro裏\n、\r和\n\r分別表示行的意思,每一行的\r和\n不會被儲存。其實createfromwords也可以實現createfromlines的功能,只要將dchars設為\r或\n,那它創造元素的方式會以\r或\n作分隔。

v=vec.createFromLines("line1\n2222\r\n3\n\n")
創造四個Vetor的元素 v[0] 設為 "line1", v[1] 設為 "2222", v[2] 設為 "3", 和 v[4] 設為 ""

註如果在\n字元前留一個空格,此空格亦會保留。比如v = vec.createfromlines("alpha \n beta"),執行win.debug(v[0])得出結果是"alpha ",在a之元後有一空格。

 

Other Vector Operations

  • Length

語法:len=v.length

length 是指一個陣列內的成員數目,除了顯示陣列長度外,您還自定陣列的長度,但原來的元素不變,例如

local len = v.length()

v = vec.create(10,5)

v[0] = "donkey"
v[1] = "lion "

v[2] = "rabbit"

v[3] = "shark"          ;在此陣列中v.length = 5

v[4] = "turtle"

If  (len>4) len=3

           win.debug(len)                 ;在設定len=3後,v.length就變成3

           win.debug(v[4])                ;但v[4]元素仍然存在得出結果是" turtle "

  • ShowMenu

語法:len = v.showmenu(maxtext,pos,autoclose,color, xoff,, yoff)

V.showmenu命令

用菜單的方式顯示Vector元素裏的所有項目,而Len會反應您所點擊的元素index,-1表示您沒有點擊任何項目。

maxtext

You can use *sep as an vector entry to show a menu separator, *colsep to start a new column, and *colsepline to start a new column with a separating line. 

If present, the maxtext argument gives the maximum length of the labels in the menu. 

Pos

此參數表示以不同的位置顯示菜單,1表示屏幕的中間位置,2表示在滑標的中間位置,3表示顯示在text cursor的位置,4是您指定的屏幕位置格式是(0,0),如果省略pos參數的話會以2作默認參數。

autoclose

此參數表示菜單在幾秒後會自動關閉,1表示啟動此功能,0則關閉此功能。

Color

此參數表示以不同的顏色顯示菜單,您可以用單一整數值(紅色是最小的整數)或者用三個以空間作分隔的數字(RGB)

xoff,, yoff

 xoff,, yoff兩個參數都是optional,它們亦就是pos參數4的x座標和y座標

  • Insert

語法:v.insert(i,s)
Insert(i,s)能夠插入新的元素在任何位置。如果所插入的位置己經有元素存在的話,該原素和在它之後的所有元素會向後推一格,而陣列的長度(vec.length)亦相應地增加 "1 "。如果您所插入的元素大於vec.capacity 或 index i < 0,這時將會有錯誤產生。

v = vec.create(10,10)

local len = v.length()

v[0] = "donkey"
v[1] = "lion "

v[2] = "rabbit"

v[3] = "shark"         

v[4] = "turtle"

v.insert(0,"elephant")         

win.debug(v[0],len)        ;得出結果 len 是" 5 ", V[0] ="elephant" ,v[1]="donkey"

v.delete(0)                     ;將原來的v[0]="elephant" 刪除

v.insert(7,"elephant")  

win.debug(len,v[7])       ;得出結果len="7", V[7]="elephant" , v[5] = undefinded , v[6] = undefinded 

  • Delete

語法:v.delete(i)                    ;留意( i ) 是用小括號括住,而不是陣列方框號啊
刪除元素i,而其他元素會向上推一格,比如

local len = v.length()

v = vec.create(10,5)

v[0] = "donkey"
v[1] = "lion "

v[2] = "rabbit"

v[3] = "shark"         

v[4] = "turtle"

win.debug(len,v[0])       ;得出結果 len=" 5 ", V[0] ="donkey"

v.delete(0)

win.debug(len,v[0])       ;得出結果 len="4", V[0] ="lion"

[簡介]

我們可以用v.delete[v.length-1]表示刪除陣列中最後一個元素,這相等於Javascript的array.pop命令。v.delete[0]表示刪除陣列首項的元素,相等於Javascript的array.shift。

 

  • DeleteAll

語法:v.deleteall
Deletes elements from vector v;  vec.length set to 0.

  • 獲取Vector元素值

語法:s=v[i]                 此命令相等於v.get(i)

獲取v Vector的 i index元素值。如果語法中的i Index小於0或者大過Vec.Capacity它會顯示Error的訊息。

Sorting and Searching Vectors

 

  • v.swap(i,j)

將 " I "元素和" j " 互相倒轉。

local len = v.length()

v = vec.create(10,5)

v[0] = "donkey"
v[1] = "lion "

v.swap(0,1)           // 將元素v[0] = "donkey" 變成v[1] = "donkey"

                             //將元素v[1] = "lion" 變成v[0] = "lion"

win.debug(v[0],v[1])                 ;得出結果 v[0] = "lion"、v[1] = "donkey"

[簡介]

其實你也可以用下列的命令,用t 變量作為中間人

t=v[i]  

v[i]=v[j]             //t變量作為暫時儲存v[i] 和v[j] 的值

v[j]=t

將v[i] 元素和 v[j] 元素倒素,但v.swap(i,j)在執行效率上會比較明顯。如果想實現類似Javascript的array.reverse,應該怎樣做呢?

  • v.sort(flagdesc,flagcase)

V.sort(flagdesc,flagcase)能夠根據字母來排序,Flagdesc參數是設立排序的方向

默認值是0表示排序的方式由小到大(ascending) ,

1表示排序由大到小(descending)

Flagcase參數是1的話,表示字元的大小楷亦被考慮。

  Strings of 9 digits or less are treated as numbers for comparisons, so that "4" is less than "20".

下面例子是由小到大的排序"donkey" , "lion" , "rabbit" , "shark" , "turtle "字串

v = vec.create(10,5)

v[0] = "donkey"
v[1] = "lion "

v[2] = "rabbit"

v[3] = "shark"

v[4] = "turtle"

        v.sort
for each line in v

        win.debug(line)

endfor

得出結果是"donkey" , "lion" , "rabbit" , "shark" , "turtle "

 

  • v.sortstring(flagdesc,flagcase)

和V.Sort 幾乎一樣。除了v.sortstring會將字元當strings處理, so that "4" is greater than "20".

  • v.doublesort(w,flagdesc,flagcase)

V.doublesort能夠同時排序兩個Vector,而其中一個Vector的排序方式相對於另一個Vector。

v = v.createfromword("3 1 4 2")

w = v.createfromword("q a t x ")

v.doublesort(w)

for each line in w

win.debug(line)

endfor

如果Vector v包括四個元素3,1,4,2,而Vector w亦包括四個元素 "q", "a", "t", "X",然後執行v.doublesort(w)它會敷於V元素值為(1 2 3 4),而敷於w元素值為"a", "X", "q", "t". 

If flagdesc is "1", sort is descending.  If flagcase is "1", case of letters is used; else it is ignored.  Strings of 9 digits or less are treated as numbers for comparisons, so that "4" is less than "20".

  • v.doublesortstring(w,flagdesc,flagcase)

Same as v.doublesort, except contents of v are always treated as strings, so that "4" is greater than "20".

  •  v.binsearch(value,flag)

The vector v must be sorted in ascending order, normally using v.sortstring.

since v.binsearch without flag argument always done string compares.  The service searches for value in the vector v and returns its index.  If value is not found, -1 is returned.  Use flag=1 to make case sensitive.  Use flag=2 to compare as numbers if appropriate rather than always as strings (this emulates v.sort behavior).

 

v = vec.createfromwords("3 1 2 4 5 ")
v.sort()                                 ;用小至大的方式排序Vector V
hen = v.binsearch("5")
win.debug(hen)

得出結果是4

  •  v.bininsert(value,flag)


The vector v must be sorted in ascending order, normally using v.sortstring, since v.bininsert without flag argument always done string compares.  The service inserts the value into the vector unless the value is already there.  If the value is already there, it is not inserted.  In both cases, the service results the index of the value in the vector.  Use flag=1 to make case sensitive.  Use flag=2 to compare as numbers if appropriate rather than always as strings (this emulates v.sort behavior).


v = vec.createfromwords("3 1 2 4 5 ")
v.sort()                                                                ;用小至大的方式排序Vector V
hen = v.bininsert("ppwork")
win.debug(v[5])

得出結果ppwork

 

  评论这张
 
阅读(924)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017