Vb6 文件准备打开错误55。无法将一个文件作为二进制文件打开并写入文本文件
我有一个VB6项目已经运行良好。但我只想读取一个同步文件并读入一个文本文件,而无法读取文件并写入文本文件。如果我对写入过程和只读syncfile进行注释,则其工作正常Vb6 文件准备打开错误55。无法将一个文件作为二进制文件打开并写入文本文件,vb6,Vb6,我有一个VB6项目已经运行良好。但我只想读取一个同步文件并读入一个文本文件,而无法读取文件并写入文本文件。如果我对写入过程和只读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
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
}因为在打开任何文件之前调用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
谢谢,杰克。但是我尝试了你的解决方案,甚至我尝试了分配不同的数字,而不是使用freeFile,但再次出现相同的错误。@Varider我没有注意到你说你试图将二进制文件写入文本文件。你能解释一下你为什么要这么做吗?