这是对以前未回答的问题的重新评价。Visual Basic删除算法不起作用
我有一个记录和一个记录集合的文件。我想从该文件中删除一条记录。该算法应该将记录从文件中删除,标记要删除的记录,将记录重新保存到文件中,然后将所有记录APART从标记为删除的记录复制到成为主文件的新临时文件中。
出了什么问题:出于某种原因,除了没有正确的字段之外,算法仍会复制标记为删除的记录。它将字段留空,但由于某种原因仍然将其粘贴在新文件中。
我将单步执行代码,并观察代码只有在有四条记录时才运行FilePut
方法三次(显示四条记录中只有三条被复制到新文件,另一条被删除为预期),但是当文件加载到报告中时,它仍然包含空白记录。这没有意义,没有人能解决我的问题!
Dim n As Integer = 1
Dim TempDir As String = CurDir() & "\Temp.dat"
RecordNumber = Trim(Val(Mid(lstResultReport.Text, 1, 3)))
FileGet(4, ResultRecord, RecordNumber)
ResultRecord.TournamentName = "DELETE"
FilePut(4, ResultRecord, RecordNumber)
FileClose(4)
FileOpen(4, ResultsFilePath, OpenMode.Random, , , Len(ResultRecord))
FileOpen(5, TempDir, OpenMode.Random, , , Len(ResultRecord))
For n = 1 To LOF(4)/Len(ResultRecord)
FileGet(4, ResultRecord, n)
If Trim(ResultRecord.TournamentName) <> "DELETE" Then
FilePut(5, ResultRecord, n)
End If
Next
FileClose(4)
FileClose(5)
Kill(ResultsFilePath)
FileCopy(TempDir, ResultsFilePath)
Kill(TempDir)
FileOpen(4, ResultsFilePath, OpenMode.Random, , , Len(ResultRecord))
UPDATE有趣的是,当我去删除该文件中的最后一条记录的算法工作。
嗯...万岁VB6。 *叹*这是2015年,哟。 – 2015-03-13 12:31:36
我的水晶球说你覆盖了现有的文件。但它仍然有一个你没有覆盖的旧记录。您必须先删除Temp.dat。 – 2015-03-13 12:38:24
你是说当我打开/创建temp.dat文件?即Dim TempDir As String = CurDir()&“\ Temp.dat”',然后'FileOpen(5,TempDir,OpenMode.Random,,Len(ResultRecord))? ' 因为我试过,但它没有解决我的问题 – TurgidWizard 2015-03-13 12:56:08