找回密码
 加入
搜索
查看: 3793|回复: 4

au3数组操作的疑问

[复制链接]
发表于 2009-12-30 19:45:23 | 显示全部楼层 |阅读模式
本帖最后由 itljl 于 2009-12-31 16:35 编辑

我需要向一个二维数组的末尾添加数据。
我现在用的方法是:(数组为:$ManArray)

$u = UBound($ManArray);获得长度
ReDim $ManArray[$u + 1][2];修改长度
;增加
$ManArray[$u][0] = $aConnected[$i][0] ;Socket
$ManArray[$u][1] = $aConnected[$i][1] ;IP
$ManArray[0][0] += 1 ;设置数组0号记录的数组长度+1

我看了数组操作的自定函数,只支持向一维数据添加数据,不支持向二维数据添加。
二维数据添加有更简单的办法吗?
发表于 2009-12-30 21:09:49 | 显示全部楼层
本帖最后由 afan 于 2009-12-31 15:23 编辑

自定义函数吧,和 _ArrayAdd 差不多的

p.s, 标题请改详细些~
发表于 2009-12-30 22:39:53 | 显示全部楼层
本帖最后由 afan 于 2009-12-30 23:40 编辑

回复 1# itljl


    修改了原函数“_ArrayAdd()”为“__ArrayAdd()”
;修改了原函数“_ArrayAdd()”为“__ArrayAdd()”,增加支持2维数组及自动判断0号元素。
;操作1维、2维数组例子:

#include <Array.au3>
Local $avArray[10]
$avArray[0] = "Tom"
$avArray[1] = "Holger"
$avArray[2] = "Jon"
$avArray[3] = "Larry"
$avArray[4] = "Jeremy"
$avArray[5] = "Valik"
$avArray[6] = "Cyberslug"
$avArray[7] = "Nutster"
$avArray[8] = "JdeB"
$avArray[9] = "Tylo"
_ArrayDisplay($avArray, "原1维数组")
__ArrayAdd($avArray, "Brian")
_ArrayDisplay($avArray, "增加后")
Local $avArray[3][2] = [[2]]
$avArray[1][0] = "Holger"
$avArray[1][1] = "Holger111"
$avArray[2][0] = "Jon"
$avArray[2][1] = "Jon1111"
_ArrayDisplay($avArray, "原2维数组")
__ArrayAdd($avArray, "Brian", 'Brian111')
__ArrayAdd($avArray, "abcdefg", 'abcdefg111')
__ArrayAdd($avArray, "dgdhhf", 'fhdfhf111')
_ArrayDisplay($avArray, "增加后")

Func __ArrayAdd(ByRef $avArray, $vValue0, $vValue1 = '', $0_auto = 1)
        ;说明:在1维或2维数组末尾添加指定的值。(修改自原_ArrayAdd函数)
        ;Afan提示:$0_auto参数为1时自动判断0号元素的值是否为数组的数量-1,是则自动+1。
        If Not IsArray($avArray) Then Return SetError(1, 0, -1)
        Local $iUBound = UBound($avArray)
        If UBound($avArray, 0) = 1 Then 
                If $0_auto And $avArray[0] = $iUBound-1 Then $avArray[0] += 1
                ReDim $avArray[$iUBound + 1]
                $avArray[$iUBound] = $vValue0
        ElseIf UBound($avArray, 0) = 2 Then 
                If $0_auto And $avArray[0][0] = $iUBound-1 Then $avArray[0][0] += 1
                ReDim $avArray[$iUBound + 1][2]
                $avArray[$iUBound][0] = $vValue0
                $avArray[$iUBound][1] = $vValue1
        ElseIf UBound($avArray, 0) > 2 Then
                Return SetError(2, 0, -1)
        EndIf
        Return $iUBound
EndFunc   ;==>__ArrayAdd

评分

参与人数 1金钱 +10 贡献 +1 收起 理由
itljl + 10 + 1 谢谢。

查看全部评分

 楼主| 发表于 2009-12-31 16:33:29 | 显示全部楼层
谢谢楼上的朋友,我还在用3.3正式版
发表于 2010-4-30 22:07:09 | 显示全部楼层
高人高人高人
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 18:22 , Processed in 0.092688 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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