找回密码
 加入
搜索
查看: 2757|回复: 3

[AU3基础] AU3 请教各位,神奇的UBound语句出错?还是版本问题?【问题已解决】

[复制链接]
发表于 2013-10-24 20:50:00 | 显示全部楼层 |阅读模式
本帖最后由 倚栏听风 于 2013-10-27 10:16 编辑

使用AU3的 UBound语句会出错。


这是AU3帮助文件里面的代码。执行出错


这里是具体出错的位置。Array.au3的 _ArrayTranspose 函数


这个是版本信息
Func _ArrayTranspose(ByRef $avArray)
        If UBound($avArray, 0) <> 2 Then Return SetError(1, 0, 0)

        Local $vElement = 0, $iDim_1 = UBound($avArray, 1), $iDim_2 = UBound($avArray, 2), $iDim_Max = ($iDim_1 > $iDim_2) ? $iDim_1 : $iDim_2 ;就是这一行出错的,我发现有个问号和冒号的表达式,我记得应该没有俩的吧。 $iDim_Max = ($iDim_1 > $iDim_2) ? $iDim_1 : $iDim_2 

        If $iDim_Max <= 4096 Then
                ReDim $avArray[$iDim_Max][$iDim_Max]
                For $i = 0 To $iDim_Max - 2
                        For $j = $i + 1 To $iDim_Max - 1
                                $vElement = $avArray[$i][$j]
                                $avArray[$i][$j] = $avArray[$j][$i]
                                $avArray[$j][$i] = $vElement
                        Next
                Next
                ReDim $avArray[$iDim_2][$iDim_1]
        Else
                Local $aTemp[$iDim_2][$iDim_1]
                For $i = 0 To $iDim_1 - 1
                        For $j = 0 To $iDim_2 - 1
                                $aTemp[$j][$i] = $avArray[$i][$j]
                        Next
                Next
                ReDim $avArray[$iDim_2][$iDim_1]
                $avArray = $aTemp
        EndIf
        Return 1
EndFunc   ;==>_ArrayTranspose
我发现有个问号和冒号的表达式,我记得应该没有俩的吧。 $iDim_Max = ($iDim_1 > $iDim_2) ? $iDim_1 : $iDim_2
各位有条件的话能贴出你们电脑里的这个函数吗?  这究竟是版本问题还是神马问题呢?



------------------------------------------------

经二楼的亲提醒,修改 _arraytranspose 函数后问题解决。
Func _ArrayTranspose(ByRef $avArray)
        If UBound($avArray, 0) <> 2 Then Return SetError(1, 0, 0)

        Local $vElement = 0, $iDim_1 = UBound($avArray, 1), $iDim_2 = UBound($avArray, 2) ;, $iDim_Max = ($iDim_1 > $iDim_2) ? $iDim_1 : $iDim_2
        
        If $iDim_1 > $iDim_2 Then
                $iDim_Max = $iDim_1
        Else
                $iDim_Max = $iDim_2
        EndIf
        
        If $iDim_Max <= 4096 Then
                ReDim $avArray[$iDim_Max][$iDim_Max]
                For $i = 0 To $iDim_Max - 2
                        For $j = $i + 1 To $iDim_Max - 1
                                $vElement = $avArray[$i][$j]
                                $avArray[$i][$j] = $avArray[$j][$i]
                                $avArray[$j][$i] = $vElement
                        Next
                Next
                ReDim $avArray[$iDim_2][$iDim_1]
        Else
                Local $aTemp[$iDim_2][$iDim_1]
                For $i = 0 To $iDim_1 - 1
                        For $j = 0 To $iDim_2 - 1
                                $aTemp[$j][$i] = $avArray[$i][$j]
                        Next
                Next
                ReDim $avArray[$iDim_2][$iDim_1]
                $avArray = $aTemp
        EndIf
        Return 1
EndFunc   ;==>_ArrayTranspose

本帖子中包含更多资源

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

×
发表于 2013-10-24 21:12:39 | 显示全部楼层
好像是你的版本不支持3元计算式吧
 楼主| 发表于 2013-10-27 01:51:52 | 显示全部楼层
回复 2# kevinch


    我用的就是论坛上给出的最新正式版吧。。
 楼主| 发表于 2013-10-27 02:05:34 | 显示全部楼层
回复 2# kevinch


    感谢提示,三元表达式,下午我改一改这个函数应该就可以了,谢谢您的提示。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 10:55 , Processed in 0.192521 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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