找回密码
 加入
搜索
查看: 4554|回复: 12

[AU3基础] AutoIt数组镶嵌,要怎么样写才能直接读出其中的数据?

  [复制链接]
发表于 2011-4-17 08:25:18 | 显示全部楼层 |阅读模式
本帖最后由 easefull 于 2011-5-5 15:50 编辑

假设有栋8层高的楼.每层楼有8个房间,房间编号为01-08.
$Array[0]      = 楼高
$Array[0]-[10] = 数组镶嵌,表示每层楼的房间号列表.

#include <Array.au3>
Local $aRoom[8]
Local $aMode[8] = ["01","02","03","04","05","06","07","08"]
Local $iCount   = 8
Local $Array[$iCount+1]
$Array[0] = $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[6]' &@CRLF& _
                                @TAB & 'MsgBox(4096, "6楼第6个房间",  $aTmp[5])' &@CRLF& _
                                @CRLF& '代码应该要怎么写?'
MsgBox(4096, "数组镶嵌的使用问题",  $sQuestion)
Exit
发表于 2011-4-17 09:01:38 | 显示全部楼层
不知道楼主有没有听过二维数组。
$Array[8][8]
 楼主| 发表于 2011-4-17 09:23:16 | 显示全部楼层
回复 2# tryhi

我知道二维数组.
只是我现在想要做的是读出正则标志 = 4时返回的数据,那返回的数据就是数组镶嵌结构的.
在这里给出这例子只是为了直观说明数据样式.
发表于 2011-5-6 10:22:28 | 显示全部楼层
這個仍需努力啊
发表于 2011-6-2 19:54:51 | 显示全部楼层
写个读取 镶嵌数组的函数,直接调用。
发表于 2011-6-2 20:26:55 | 显示全部楼层
在C里,多维数组也可以用一维方式来访问,但autoit怎么做,不知道
发表于 2011-6-2 22:16:51 | 显示全部楼层
#include <Array.au3>
Local $aRoom[8][9]
Local $aMode[9] = ["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[5][5]
MsgBox(4096, "数组镶嵌的使用问题",  $sQuestion)
Exit
 楼主| 发表于 2011-6-3 05:10:40 | 显示全部楼层
楼上的方法是改变数据结构——把镶嵌数组改成了多维数组.
但我遇到的问题却是:
使用StringRegExp(模式4)返回了一个镶嵌数组结构的数据
这个数据并不是不能修改,但在修改之前我必须得先读出里面的数据——而这正是我要问的问题.

实例:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-6-3 05:12:40 | 显示全部楼层
回复 5# pusofalse

现在看来好像也只有这个办法了.
发表于 2011-6-4 09:48:57 | 显示全部楼层
感觉说的像字典的感觉,把楼层作为key,房间号数组作为item,使用时即可通过楼层号提取出对应的房间号数组啦。
发表于 2011-6-4 10:06:47 | 显示全部楼层
#include <Array.au3>
Local $aRoom[8]
Local $aMode[8] = ["01","02","03","04","05","06","07","08"]
Local $iCount   = 8
Local $Array[$iCount+1]
Local $o_Dic=ObjCreate("scripting.dictionary")
$Array[0] = $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[6]' &@CRLF& _
                                @TAB & 'MsgBox(4096, "6楼第6个房间",  $aTmp[5])' &@CRLF& _
                                @CRLF& '代码应该要怎么写?'
#CE
$aTmp=$o_Dic(string(6))  ;这里只能这样转一下了,似乎au3不支持直接在后面接下标值的方法
MsgBox(4096, "数组镶嵌的使用问题",  $aTmp[5])
Exit
这段不知道是不是你想要的效果
发表于 2011-6-5 00:01:01 | 显示全部楼层
学习了!!!谢谢楼主
发表于 2011-6-6 01:05:42 | 显示全部楼层
你们说的都是非常复杂的办法
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-21 00:21 , Processed in 0.090030 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表