我有一个vb 6项目已经正常工作了。但我只是想读取一个syncfile并读入一个文本文件无法读取文件并写入文本文件。如果我评论写入过程并且只读取同步文件而不是工作正常。
Sub ReadSyncFile(){
Dim iFile As Long
iFile = FreeFile
iFile2 = FreeFile
Open App.Path & "\sirt.txt" For Output As iFile2
Open SyncFile For Binary Access Read As iFile
Get iFile, , SyncHdr
wb.Visible = False
For icnt = 1 To MAX_PAGES
PBar = icnt
DoEvents
If SyncHdr(icnt).OffsetStart > 1 Then
Seek iFile, SyncHdr(icnt).OffsetStart
Get iFile, , SyncPgs(icnt).pgHdr
ReDim arWords(SyncPgs(icnt).pgHdr.nWords)
Get iFile, , arWords
For i = 0 To UBound(arWords)
Print #iFile2, i, arWords(i).WrdNum; arWords(i).WrdText; arWords(i).WrdAudLen; arWords(i).WrdIsSync
Next
Close iFile2
ReDim SyncPgs(icnt).arWrd(SyncPgs(icnt).pgHdr.nWords)
SyncPgs(icnt).arWrd = arWords
End If
Next
Close iFile
Erase SyncHdr
wb.Visible = True
syncOpened = True
End Sub
}
答案 0 :(得分:0)
因为您在打开任何文件之前调用FreeFile
函数,所以返回相同的数字(可能是1),并分配给iFile和iFile2。这是您的错误的来源。您正在尝试使用相同的文件编号打开这两个文件。
在您再次调用FreeFile之前,稍微更改您的代码以将iFile设置为FreeFile,即打开文件。
Sub ReadSyncFile(){
Dim iFile As Long
iFile = FreeFile
Open SyncFile For Binary Access Read As iFile
iFile2 = FreeFile
Open App.Path & "\sirt.txt" For Output As iFile2
Get iFile, , SyncHdr
wb.Visible = False
For icnt = 1 To MAX_PAGES
PBar = icnt
DoEvents
If SyncHdr(icnt).OffsetStart > 1 Then
Seek iFile, SyncHdr(icnt).OffsetStart
Get iFile, , SyncPgs(icnt).pgHdr
ReDim arWords(SyncPgs(icnt).pgHdr.nWords)
Get iFile, , arWords
For i = 0 To UBound(arWords)
Print #iFile2, i, arWords(i).WrdNum; arWords(i).WrdText; arWords(i).WrdAudLen; arWords(i).WrdIsSync
Next
Close iFile2
ReDim SyncPgs(icnt).arWrd(SyncPgs(icnt).pgHdr.nWords)
SyncPgs(icnt).arWrd = arWords
End If
Next
Close iFile
Erase SyncHdr
wb.Visible = True
syncOpened = True
End Sub