找回密码
 加入
搜索
查看: 6323|回复: 4

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

[复制链接]
发表于 2014-7-5 11:28:36 | 显示全部楼层 |阅读模式
本帖最后由 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 1  CPU: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().





求大师指教如何解决?
发表于 2014-7-5 20:53:18 | 显示全部楼层
把出错地方
 _ArraySwap($Arr[$x], $Arr[$x - 1])
改为:
_ArraySwap($Arr,$Arr[$x], $Arr[$x - 1])
按给出的此函数相关定义,调用此函数时,至少要传入3个参数。
第一个参数是已定义好的数组,第二个参数是该数组下标值之一,第三个参数是该数组另一个下标值。
 楼主| 发表于 2014-7-6 00:00:48 | 显示全部楼层
回复 2# user3000

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

希望设置成前面的显示方式,请指教.谢谢!
发表于 2014-7-7 19:28:08 | 显示全部楼层
回复 4# jiaosc


这个设置我不会!
可以考虑把低版的SCiTE拷过来用的。
也可以强制自己使用一些日子,慢慢就习惯了吧。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-26 00:20 , Processed in 0.120511 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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