倚栏听风 发表于 2013-10-24 20:50:00

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

本帖最后由 倚栏听风 于 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

kevinch 发表于 2013-10-24 21:12:39

好像是你的版本不支持3元计算式吧

倚栏听风 发表于 2013-10-27 01:51:52

回复 2# kevinch


    我用的就是论坛上给出的最新正式版吧。。

倚栏听风 发表于 2013-10-27 02:05:34

回复 2# kevinch


    感谢提示,三元表达式,下午我改一改这个函数应该就可以了,谢谢您的提示。
页: [1]
查看完整版本: AU3 请教各位,神奇的UBound语句出错?还是版本问题?【问题已解决】