這是對以前未回答的問題的重新評價。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