文件就绪打开错误55.无法打开一个文件作为二进制文件并写入文本文件

时间:2015-04-11 15:11:16

标签: vb6

我有一个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

}

1 个答案:

答案 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