Arrays 系统索引自动失效异常';发生

Arrays 系统索引自动失效异常';发生,arrays,vb6,visual-studio-2013,Arrays,Vb6,Visual Studio 2013,试图创建一个快速而肮脏的VB程序,根据.dat逗号分隔文件重命名tif文件。获取此错误: A first chance exception of type 'System.IndexOutOfRangeException' occurred in mscorlib.dll 代码如下: Dim objFSO, objFolder, inFile, strInLine, strOldFile, strNewFile objFSO = CreateObject("Scripting.File

试图创建一个快速而肮脏的VB程序,根据.dat逗号分隔文件重命名tif文件。获取此错误:

A first chance exception of type 'System.IndexOutOfRangeException' occurred in mscorlib.dll
代码如下:

Dim objFSO, objFolder, inFile, strInLine, strOldFile, strNewFile
    objFSO = CreateObject("Scripting.FileSystemObject")
    'Select the folder
    objFolder = objFSO.GetFolder("C:\Users\CKILLION\Desktop\planning commission\")
    'Open Text File
    inFile = objFSO.OpenTextFile("C:\Users\CKILLION\Desktop\consct01.dat", 1)
    Do Until inFile.AtEndOfStream
        'Read text file line by line and Split each line into 4 parts.
        strInLine = Split(inFile.ReadLine, ", ")
        'Old File name
        strOldFile = strInLine(2)
        'new File name
        strNewFile = strInLine(1)
        'Loop through the files in the folder
        For Each File In objFolder.Files
            'If the file name matches the old file name above
            If File.Name = strOldFile Then
                'Replace it
                File.Name = strNewFile
            End If
        Next
    Loop
    'Close the text reader
    inFile.Close()
    MsgBox("Done.")
这是.dat文件中的一些文本:

“1967”、“08-26-47”、“00001875.tif”、“\images\00001”、“54814”、“TIFF”、“9/13/2001 2:13:44am”、“c:\users\ckillion\desktop\city commission minutes\1947\00001875.tif”、“city commission minutes\1947” “1966”、“09-02-47”、“00001874.tif”、“图像\00001”、“28142”、“TIFF”、“9/13/2001 2:13:14am”、“c:\users\ckillion\desktop\city commission minutes\1947\00001874.tif”、“city commission minutes\1947” “1965”、“09-30-47”、“00001873.tif”、“\images\00001”、“23342”、“TIFF”、“9/13/2001 2:12:40am”、“c:\users\ckillion\desktop\city commission minutes\1947\00001873.tif”、“city commission minutes\1947” “1964年”、“10-14-47年”、“00001872.tif”、“图像\00001”、“38444”、“TIFF”、“9/13/2001 2:12:28am”、“c:\users\ckillion\desktop\city commission minutes\1947\00001872.tif”、“city commission minutes\1947” “1963年”、“10-28-47年”、“00001871.tif”、“图像\00001”、“41466”、“TIFF”、“9/13/2001 2:12:16am”、“c:\users\ckillion\desktop\city commission minutes\1947\00001871.tif”、“city commission minutes\1947” “1962”、“11-12-47”、“00001870.tif”、“\images\00001”、“29560”、“TIFF”、“9/13/2001 2:12:00am”、“c:\users\ckillion\desktop\city commission minutes\1947\00001870.tif”、“city commission minutes\1947” “1960”、“12-03-47”、“00001868.tif”、“\images\00001”、“36435”、“TIFF”、“9/13/2001 2:11:38am”、“c:\users\ckillion\desktop\city commission minutes\1947\00001868.tif”、“city commission minutes\1947”


尝试在逗号所在的拆分部分中使用这一行,但不要留空格

strInLine = Split(inFile.ReadLine, ",")

行中的逗号之间没有空格,因此该行不会被拆分,因为没有与逗号和空格(“,”)匹配的分隔符。该错误表示您试图访问不存在的索引。文件中的一行或多行似乎不是您认为的预期长度。如果看不到实际的文件,也不知道换行符在哪里,我真的帮不上什么忙。我建议对文件进行分析,确保每行有预期的字段数,并且除了发生定界的位置外,不会在任何地方出现额外的逗号。希望这能有所帮助。

您在VS2013中到底是如何使用VB6的?我认为这是您的Do-Until循环。试着用While循环替换它,看看是否有帮助。关于VB6不太清楚,但一般来说,循环会多进行一步。谢谢。已更改为Do While循环,但实际上仍然没有更改文件名。非常感谢,这解决了我的问题,我发布了它并运行了它,但实际上没有更改文件名。我不熟悉您使用的语言。我刚刚意识到了一个特殊的问题。这可能是你试图访问的索引的问题。使用逗号拆分行时,逗号之间的每个部分都是索引。因此,无论newfile和oldfile字符串位于何处,这些都是您想要访问的索引。