自从 TRex 漫游地球以来,我一直在编写 VB6,但突然间,我们的一些客户开始遇到几十年来运行良好的应用程序的问题。
问题似乎是当应用程序反复打开、附加和关闭文件时。我永远无法在我可以访问的任何机器上重现该错误。我有点猜到这就是问题所在,并更改了程序以缓冲内容并一次写入所有内容,客户的问题似乎已解决。
就在最近,我也遇到了这样一种情况:跳过了行,打印出了一行满是垃圾字符的行。就像已分配但从未清除的旧时 C 字符串缓冲区一样。
该代码没有什么特别的,标准的VB6文件访问代码。我的问题是两部分。 1. 这种情况发生在其他人身上吗? 2. 如果是这样,你找出原因了吗?
我对原因的猜测是系统处于某种资源压力之下,并且一些深层 C 代码出现故障。
这是代码:
Dim nFileWrite As Integer
nFileWrite = FreeFile
Open fnAddBkSlash(sReadFilePath) & sWriteFileName For Append As #nFileWrite
Print #nFileWrite, sLineContents
Close nFileWrite
该代码片段是否完整,或者您是否遗漏了检索下一个可用文件编号的行?
Dim nFileWrite As Integer
nFileWrite = FreeFile 'retrieve free file number
Open fnAddBkSlash(sReadFilePath) & sWriteFileName For Append As #nFileWrite
Print #nFileWrite, sLineContents
Close nFileWrite
只是想知道如果您在尝试写入行之前没有专门检索新的文件编号,输出是否偶尔会丢失。