xiaosen666m 发表于 2010-8-26 11:06:07

數組問題

最近寫了個刪除profile檔,老是報錯,高手看一下:
error:>"d:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "E:\新增AutoIt v3 Script.au3"   
E:\??AutoIt v3 Script.au3 (33) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$a[$i] = FileReadLine($file)
^ ERROR
>Exit code: 1    Time: 2.780#include <File.au3>
#include <Array.au3>

Local $i, $a
;Run DOS command to get user profile lists
Run(@COMSPEC & "")
Send(" C:    ")
Send("{ENTER}")
Send(   "cd C:\Documents and Settings" )
Send("{ENTER}")
If FileExists("d:\user.txt") Then
   Send(" dir /b >>d:\user.txt")
   Send("{ENTER}")
   Send(" Exit")
   Send("{ENTER}")
Else
        _FileCreate("d:\user.txt")
        Send(" dir /b >>d:\user.txt")
        Send("{ENTER}")
        Send(" Exit")
        Send("{ENTER}")
EndIf
; open user.txt, and write an array.
$file = FileOpen("d:\user.txt", 0 )
$CountLines = _FileCountLines("d:\user.txt")
MsgBox(64, "Error log recordcount", "There are " & $CountLines & " lines.")
ReDim $a[$CountLines]
If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf
For $i = 0 To $CountLines + 1 Step 1
    $a[$i] = FileReadLine($file)
        ;_ArrayDisplay($a)
   ;MsgBox(0, "Line read:", $a[$i])
Next
    MsgBox(0, "Error", "Unable to open file.")
;delete profile
For $i=0 To $CountLinesStep 1
        If $a[$i] = "Administrator" And $a[$i] = "All Users" And $a[$i] = "Default User" Then
                DirRemove($a[$i + 1], 1)
        Else
                DirRemove($a[$i], 1)
        EndIf
Next


FileClose($file)

xiaosen666m 发表于 2010-8-26 11:08:48

老是在第33行報錯,翻譯了下:数组变量有误或下标尺寸范围subscripts超过了。什麽意思啊?

republican 发表于 2010-8-26 12:22:10

你ReDim $a[$CountLines]后,

怎么可以用到

$a[$CountLines + 1]?

这样数组肯定不存在.

你能用的是$a[$CountLines - 1]

xsjtxy 发表于 2010-8-26 13:38:21

你那些个命令换成AU3多简洁啊。
$Documents = @HomeDrive&"\Documents and Settings\"

$search = FileFindFirstFile($Documents&"*.*")
If $search = -1 Then Exit

While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    If $file <> "Administrator" And $file <> "All Users" And $file <> "Default User" Then DirRemove($Documents&$file, 1)
WEnd
FileClose($search)
页: [1]
查看完整版本: 數組問題