找回密码
 加入
搜索
查看: 7427|回复: 24

[AU3基础] 求支持二维数组的版本。试了好多都不行。

 火.. [复制链接]
发表于 2015-4-19 11:22:09 | 显示全部楼层 |阅读模式
而用au3.cc都可以。但我在论坛下的都好像不成功。很是着急。
发表于 2015-4-19 11:41:31 | 显示全部楼层
什么数组,没听说过这种情况
 楼主| 发表于 2015-4-19 12:26:33 | 显示全部楼层
回复 2# netegg


上次发的一个贴子,不能生成结果。用au3.cc的版本就行。
#include <file.au3>
#include<array.au3>
Dim $R[2][2]
For $net1 = 1 To 100000000000
        $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $net1)
        If @error <> 0 Then ExitLoop
        $R[$net1][0] = "第" & $net1 & "键"
        $R[$net1][1] = $var
        ReDim $R[UBound($R) + 1][2]
Next

;_ArrayDisplay($R, "")
FileDelete("c:\ok.txt")
FileWrite("c:\ok.txt", _ArrayToString($R, @CRLF))

MsgBox(0,"提示","已经生成请检查!")


用本论坛
生成出来是空的。
发表于 2015-4-19 12:54:28 | 显示全部楼层
本帖最后由 netegg 于 2015-4-19 13:11 编辑

回复 3# bhffhzh
[au3]#include <file.au3>
#include<array.au3>
Dim $R[2][2]
For $net1 = 1 To 100000000000
        $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $net1)
        If @error <> 0 Then ExitLoop
        $R[$net1][0] = "第" & $net1 & "键"
        $R[$net1][1] = $var
        ReDim $R[UBound($R) + 1][2]
Next

_ArrayDisplay($R, "")
;FileDelete("c:\ok.txt")
_FileWritefromarray("e:\ok.txt", $R)

MsgBox(0,"提示","已经生成请检查!")[/au3]

本帖子中包含更多资源

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

×
发表于 2015-4-19 13:07:01 | 显示全部楼层
看帮助,_ArrayToString函数本不支持二维 以上数组的。楼主一定要用此次函数的话,可如下处理:
#include <file.au3>
#include <array.au3>
#RequireAdmin
Dim $R[1]
For $net1 = 1 To 100000000000
        $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $net1)
        If @error <> 0 Then ExitLoop
        _ArrayAdd($R, "第" & $net1 & "键 " & $var)
Next

_ArrayDisplay($R, "")
;FileDelete("F:\ok.txt")
FileWrite("F:\ok.txt", _ArrayToString($R, @CRLF))

MsgBox(0, "提示", "已经生成请检查!")
发表于 2015-4-19 13:12:06 | 显示全部楼层
"上次发的一个贴子,不能生成结果。用au3.cc的版本就行。," ,楼主是有几个意思。
发表于 2015-4-19 13:17:53 | 显示全部楼层
[au3]Func _Array2D_ToString(Const ByRef $avArray, $sDelim = "|", $iStart = 0, $iEnd = -1, $iDim = 1, $sSubDelim = "", $iSubStart = 0, $iSubEnd = -1)
        If $sDelim = Default Then $sDelim = "|"
        If $iStart = Default Then $iStart = 0
        If $iEnd = Default Then $iEnd = -1
        If $iDim = Default Then $iDim = 1
        If $sSubDelim = Default Then $sSubDelim = ""
        If $iSubStart = Default Then $iSubStart = 0
        If $iSubEnd = Default Then $iSubEnd = -1

        ; Validate the array
        If Not IsArray($avArray) Then Return SetError(1, 0, 0)

        Local $sResult, $iUbound, $i
        Switch UBound($avArray, 0)
                Case 1
                        $iUbound = UBound($avArray) - 1
                        If $iStart < 0 Then $iStart = 0
                        If $iEnd < 0 Or $iEnd > $iUbound Then $iEnd = $iUbound
                        If $iStart > $iEnd Then Return SetError(4, 1, 0)
                        For $i = $iStart To $iEnd
                                $sResult &= $avArray [$i] & $sDelim
                        Next
                Case 2
                        $iUbound = UBound($avArray, $iDim)
                        Local $iUbound2 = UBound($avArray, Mod($iDim, 2) + 1), $j
                        If $iStart < 0 Then $iStart = 0
                        If $iEnd < 0 Or $iEnd > $iUbound - 1 Then $iEnd = $iUbound - 1
                        If $iSubStart < 0 Then $iSubStart = 0
                        If $iSubEnd < 0 Or $iSubEnd > $iUbound2 - 1 Then $iSubEnd = $iUbound2 - 1
                        If $iStart > $iEnd Then Return SetError(4, 1, 0)
                        If $iSubStart > $iSubEnd Then Return SetError(4, 2, 0)
                        ; Combine the elements into the string.
                        Switch $iDim
                                Case 1
                                        For $i = $iStart To $iEnd
                                                For $j = $iSubStart To $iSubEnd
                                                        $sResult &= $avArray [$i][$j] & $sSubDelim
                                                Next
                                                $sResult = StringTrimRight($sResult, StringLen($sSubDelim))
                                                $sResult &= $sDelim
                                        Next
                                Case 2
                                        For $j = $iStart To $iEnd
                                                For $i = $iSubStart To $iSubEnd
                                                        $sResult &= $avArray [$i][$j] & $sSubDelim
                                                Next
                                                $sResult = StringTrimRight($sResult, StringLen($sSubDelim))
                                                $sResult &= $sDelim
                                        Next
                                Case Else
                                        Return SetError(3, 0, 0)
                        EndSwitch
                Case Else
                        Return SetError(2, 0, 0)
        EndSwitch

        Return SetError(0, 0, StringTrimRight($sResult, StringLen($sDelim)))
EndFunc   ;==>_Array2D_ToString
[/au3]
发表于 2015-4-19 13:22:28 | 显示全部楼层
回复 6# Huiseyu
明显是自己没找到现成的就说不行呗
 楼主| 发表于 2015-4-19 13:42:26 | 显示全部楼层
本帖最后由 bhffhzh 于 2015-4-19 13:46 编辑

我确实用au3.cc就能生成。

http://www.autoitx.com/forum.php ... otice&tid=47690

这是我上次发的一个贴子。
发表于 2015-4-19 13:45:19 | 显示全部楼层
本帖最后由 Huiseyu 于 2015-4-19 13:49 编辑
我确实用au3.cc就能生成。
bhffhzh 发表于 2015-4-19 13:42



    饭不是米,吃饭不用米
可能是你版本问题,我的版本在是这里下载的。测试成功后才回复。这个问题有点复杂了..
 楼主| 发表于 2015-4-19 13:48:38 | 显示全部楼层
回复 8# netegg


    请不要误会。如果要现成的,上次发的贴子,afan版主已经给出现成的了。
Local $sR = '', $net1, $var, $sFile = 'c:\ok.txt', $hFO
For $net1 = 1 To 100000000000
        $var = RegEnumKey('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', $net1)
        If @error Then ExitLoop
        $sR &= '第' & $net1 & '键' & '=' & $var & @CRLF
Next
$hFO = FileOpen($sFile, 2 + 8)
FileWrite($hFO, $sR)
FileClose($hFO)
MsgBox(0, $sFile, FileRead($sFile))
发表于 2015-4-19 14:41:02 | 显示全部楼层
本帖最后由 netegg 于 2015-4-19 14:48 编辑

回复 11# bhffhzh
afan这个又不是数组,用的是字符串,另外afan明显没写全,直接做个正则拆出来一样可以实现,这个他拿手
发表于 2015-4-19 14:42:50 | 显示全部楼层
‘支持二维数组的版本’----这是你的原话
发表于 2015-4-19 14:46:12 | 显示全部楼层
‘支持二维数组的版本’----这是你的原话
netegg 发表于 2015-4-19 14:42



    用能用的,做能做的,说有用的。呵呵
发表于 2015-4-19 16:37:01 | 显示全部楼层
本帖最后由 131738 于 2015-4-19 16:52 编辑
而用au3.cc都可以。但我在论坛下的都好像不成功。很是着急。
bhffhzh 发表于 2015-4-19 11:22


说说你在这里下的什么版本...............
至少 3.3.12.0 版本及更高版本, 这里有下载的!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-9 17:14 , Processed in 0.079242 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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