AutoIt数组镶嵌,要怎么样写才能直接读出其中的数据?
本帖最后由 easefull 于 2011-5-5 15:50 编辑假设有栋8层高的楼.每层楼有8个房间,房间编号为01-08.
$Array = 楼高
$Array- = 数组镶嵌,表示每层楼的房间号列表.
#include <Array.au3>
Local $aRoom
Local $aMode = ["01","02","03","04","05","06","07","08"]
Local $iCount = 8
Local $Array[$iCount+1]
$Array = $iCount
For $i = 1 To 8 Step 1
For $k = 0 To 7 Step 1
$aRoom[$k] = $i & $aMode[$k]
Next
;~ _ArrayDisplay($aRoom)
$Array[$i] = $aRoom ;数组镶嵌
Next
$sQuestion = '我现在想取出第6层楼,第6个房间的房间编号,如果不用下面的方法' &@CRLF& _
@TAB & '$aTmp = $Array' &@CRLF& _
@TAB & 'MsgBox(4096, "6楼第6个房间",$aTmp)' &@CRLF& _
@CRLF& '代码应该要怎么写?'
MsgBox(4096, "数组镶嵌的使用问题",$sQuestion)
Exit 不知道楼主有没有听过二维数组。
$Array 回复 2# tryhi
我知道二维数组.
只是我现在想要做的是读出正则标志 = 4时返回的数据,那返回的数据就是数组镶嵌结构的.
在这里给出这例子只是为了直观说明数据样式. 這個仍需努力啊 写个读取 镶嵌数组的函数,直接调用。 在C里,多维数组也可以用一维方式来访问,但autoit怎么做,不知道 #include <Array.au3>
Local $aRoom
Local $aMode = ["01","02","03","04","05","06","07","08","09"]
For $i = 1 To 8 Step 1
For $k = 0 To 8 Step 1
$aRoom[$i-1][$k] = $i & $aMode[$k]
Next
Next
$sQuestion = $aRoom
MsgBox(4096, "数组镶嵌的使用问题",$sQuestion)
Exit 楼上的方法是改变数据结构——把镶嵌数组改成了多维数组.
但我遇到的问题却是:
使用StringRegExp(模式4)返回了一个镶嵌数组结构的数据
这个数据并不是不能修改,但在修改之前我必须得先读出里面的数据——而这正是我要问的问题.
实例:
回复 5# pusofalse
现在看来好像也只有这个办法了. 感觉说的像字典的感觉,把楼层作为key,房间号数组作为item,使用时即可通过楼层号提取出对应的房间号数组啦。 #include <Array.au3>
Local $aRoom
Local $aMode = ["01","02","03","04","05","06","07","08"]
Local $iCount = 8
Local $Array[$iCount+1]
Local $o_Dic=ObjCreate("scripting.dictionary")
$Array = $iCount
For $i = 1 To 8 Step 1
For $k = 0 To 7 Step 1
$aRoom[$k] = $i & $aMode[$k]
Next
;~ _ArrayDisplay($aRoom)
;$Array[$i] = $aRoom ;数组镶嵌
$o_Dic(String($i))=$aRoom
Next
#CS $sQuestion = '我现在想取出第6层楼,第6个房间的房间编号,如果不用下面的方法' &@CRLF& _
@TAB & '$aTmp = $Array' &@CRLF& _
@TAB & 'MsgBox(4096, "6楼第6个房间",$aTmp)' &@CRLF& _
@CRLF& '代码应该要怎么写?'
#CE
$aTmp=$o_Dic(string(6));这里只能这样转一下了,似乎au3不支持直接在后面接下标值的方法
MsgBox(4096, "数组镶嵌的使用问题",$aTmp)
Exit这段不知道是不是你想要的效果 学习了!!!谢谢楼主 你们说的都是非常复杂的办法
页:
[1]