jiaosc 发表于 2014-7-5 11:28:36

已解决:求助:带有 File Line UDF函数的脚本在Win XP系统下运行正常,Win7下报错

本帖最后由 jiaosc 于 2014-7-6 17:25 编辑

求助:带有 File Line UDF函数的脚本在Win XP系统下运行正常,Win7下报错,提示信息如下:

+>11:27:28 开始 AccAu3Wrapper v.1.1.2.1 SciTE v.3.4.1.0   键盘布局:00000804操作系统:WIN_7/Service Pack 1CPU:X64 系统架构:X64    环境(语言:0804)
+>         SciTE目录 => C:\Program Files (x86)\AutoIt3\SciTE   用户目录 => C:\Users\jiaosc\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\jiaosc\AppData\Local\AutoIt v3\SciTE
>运行 AU3Check (3.3.12.0)从:C:\Program Files (x86)\AutoIt3
"E:\NezipFox\FileLineUDF .AU3"(486,46) : error: _ArraySwap() called with wrong number of args.
            _ArraySwap($Arr[$x], $Arr[$x - 1])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\Array.au3"(2054,93) : REF: definition of _ArraySwap().
Func _ArraySwap(ByRef $avArray, $iIndex_1, $iIndex_2, $bRow = False, $iStart = 0, $iEnd = 0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"E:\NezipFox\FileLineUDF .AU3"(490,46) : error: _ArraySwap() called with wrong number of args.
            _ArraySwap($Arr[$x], $Arr[$x + 1])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"C:\Program Files (x86)\AutoIt3\Include\Array.au3"(2054,93) : REF: definition of _ArraySwap().
Func _ArraySwap(ByRef $avArray, $iIndex_1, $iIndex_2, $bRow = False, $iStart = 0, $iEnd = 0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
E:\NezipFox\FileLineUDF .AU3 - 2 error(s), 0 warning(s)
!>11:27:28 AU3Check 语法检查结束. 按F4键跳转到下一个错误.rc:2
+>11:27:28 AccAu3Wrapper 完成.
>Exit code: 0    Time: 0.583

FileLineUDF.au3函数出错提示位置:
===============================================================================================================================
Func _FileLineMove($FilePath, $From, $TO)
    If Not _IsFileOpen($FilePath) Then
      SetError(1)
      Return 0
    EndIf
    If Not _FileLineExists($FilePath, $From) Or Not _FileLineExists($FilePath, $TO) Then
      SetError(2)
      Return 0
    EndIf
    Local $Arr
    _FileReadToArray($FilePath, $Arr)
    If @error Then
      SetError(@error)
      Return 0
    EndIf

    If $From > $TO Then
      For $x = $From To $TO + 1 Step -1
            _ArraySwap($Arr[$x], $Arr[$x - 1])→ error: _ArraySwap() called with wrong number of args.         
Next
    Else
      For $x = $From To $TO - 1 Step 1
            _ArraySwap($Arr[$x], $Arr[$x + 1])→ error: _ArraySwap() called with wrong number of args.
Next
    EndIf

    Local $FO = FileOpen($FilePath, 2)
    If $FO = -1 Then
      SetError(1)
      Return 0
    EndIf
    For $x = 1 To UBound($Arr) - 1
      FileWriteLine($FO, $Arr[$x])
    Next
    FileClose($FO)
    Return 1
EndFunc   ;==>_FileLineMove


; #FUNCTION# ====================================================================================================================
; Author ........: Melba23
; Modified.......:
; ===============================================================================================================================
Func _ArraySwap(ByRef $avArray, $iIndex_1, $iIndex_2, $bRow = False, $iStart = 0, $iEnd = 0)→ REF: definition of _ArraySwap().





求大师指教如何解决?

user3000 发表于 2014-7-5 20:53:18

把出错地方 _ArraySwap($Arr[$x], $Arr[$x - 1])改为:_ArraySwap($Arr,$Arr[$x], $Arr[$x - 1])按给出的此函数相关定义,调用此函数时,至少要传入3个参数。
第一个参数是已定义好的数组,第二个参数是该数组下标值之一,第三个参数是该数组另一个下标值。

jiaosc 发表于 2014-7-6 00:00:48

回复 2# user3000

谢谢user3000老师的指教,按照提示修改后已能正常通过语法检测,还没有时试具体功能.另外还想请教一下user3000老师,我的高版本的SciTE在折叠脚本代码的时候,IF---EndIf语句后面的EndIf或者For------Next后面的这个Next不显示,原来用低版本的SciTE在折叠脚本代码的时候时显示的,很是不习惯,想请教老师高版本的SciTE如何设置才能把后面的这个EndIf或Next等语句显示出来呢?

jiaosc 发表于 2014-7-6 00:00:56

本帖最后由 jiaosc 于 2014-7-6 10:09 编辑

回复 2# user3000

谢谢user3000老师的指教,按照提示修改后已能正常通过语法检测,还没有时试具体功能.另外还想请教一下user3000老师,我的高版本的SciTE在折叠脚本代码的时候,IF---EndIf语句后面的EndIf或者For------Next后面的这个Next不显示,原来用低版本的SciTE在折叠脚本代码的时候时显示的,很是不习惯,想请教老师高版本的SciTE如何设置才能把后面的这个EndIf或Next等语句显示出来呢?

原来用低版本的SciTE在折叠脚本代码的时候时显示:
If $setfile = -1 Then
Else       
EndIf

Func Inputini()
EndFunc   ;==>Inputini

While 1
WEnd


现在的高版本的SciTE在折叠脚本代码的时候时显示:

If $setfile = -1 Then
Else       

Func Inputini()

While 1

希望设置成前面的显示方式,请指教.谢谢!

user3000 发表于 2014-7-7 19:28:08

回复 4# jiaosc


这个设置我不会!
可以考虑把低版的SCiTE拷过来用的。
也可以强制自己使用一些日子,慢慢就习惯了吧。
页: [1]
查看完整版本: 已解决:求助:带有 File Line UDF函数的脚本在Win XP系统下运行正常,Win7下报错