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