easefull 发表于 2011-4-17 08:25:18

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

tryhi 发表于 2011-4-17 09:01:38

不知道楼主有没有听过二维数组。
$Array

easefull 发表于 2011-4-17 09:23:16

回复 2# tryhi

我知道二维数组.
只是我现在想要做的是读出正则标志 = 4时返回的数据,那返回的数据就是数组镶嵌结构的.
在这里给出这例子只是为了直观说明数据样式.

zzz867 发表于 2011-5-6 10:22:28

這個仍需努力啊

pusofalse 发表于 2011-6-2 19:54:51

写个读取 镶嵌数组的函数,直接调用。

jjlau 发表于 2011-6-2 20:26:55

在C里,多维数组也可以用一维方式来访问,但autoit怎么做,不知道

zysanjing1 发表于 2011-6-2 22:16:51

#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

easefull 发表于 2011-6-3 05:10:40

楼上的方法是改变数据结构——把镶嵌数组改成了多维数组.
但我遇到的问题却是:
使用StringRegExp(模式4)返回了一个镶嵌数组结构的数据
这个数据并不是不能修改,但在修改之前我必须得先读出里面的数据——而这正是我要问的问题.

实例:

easefull 发表于 2011-6-3 05:12:40

回复 5# pusofalse

现在看来好像也只有这个办法了.

kevinch 发表于 2011-6-4 09:48:57

感觉说的像字典的感觉,把楼层作为key,房间号数组作为item,使用时即可通过楼层号提取出对应的房间号数组啦。

kevinch 发表于 2011-6-4 10:06:47

#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这段不知道是不是你想要的效果

zysanjing1 发表于 2011-6-5 00:01:01

学习了!!!谢谢楼主

58fly 发表于 2011-6-6 01:05:42

你们说的都是非常复杂的办法
页: [1]
查看完整版本: AutoIt数组镶嵌,要怎么样写才能直接读出其中的数据?