Arrays 系统索引自动失效异常';发生
试图创建一个快速而肮脏的VB程序,根据.dat逗号分隔文件重命名tif文件。获取此错误: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
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字符串位于何处,这些都是您想要访问的索引。