那就只有把txt文件读入内存,删除那段话后,再从头到尾写入原来的文件里。
Private Sub Command1_Click()
Dim Fn As Long
Dim sData() As String
Dim Data1 As String
Dim IsDelNext As Boolean
Dim l As Long
Fn = FreeFile
Open "c:\abc.txt" For Input As #Fn
IsDelNext = False
ReDim sData(0)
Do While Not EOF(Fn)
Line Input #Fn, Data1
If Not (IsDelNext = True And Data1 = "/") Then
ReDim Preserve sData(0 To UBound(sData) + 1)
sData(UBound(sData)) = Data1
End If
If Data1 = "BkgParFactor = 1.300000000000000e+000" Then IsDelNext = True
Loop
Close #Fn
Open "c:\abc.txt" For Output As #Fn
For l = 1 To UBound(sData)
Print #Fn, sData(l)
Next
Close #Fn
End Sub
以上方法适用与较小的文件,如果文件较大则需要创建一个临时文件来写入原来写入sData()数组的数据,最后再把写好的文件改名为原来文件即可。
以下方法可以删除能查找到的所有内容
Private Sub Command2_Click()
Dim Fn As Long
Dim strCont As String
Dim bData() As Byte
Fn = FreeFile
Open "c:\abc.txt" For Binary As #Fn
strCont = Input(LOF(Fn), #Fn) '将整个段汪文件读入内存
Close #Fn
strCont = Replace(strCont, "BkgParFactor = 1.300000000000000e+000", "") '删除能败如查找到的所有指定内容
Kill "c:\abc.txt" '删除文件以便以二进制方式重写
Open "c:\abc.txt" For Binary As #Fn '重写文件
Put #Fn, , strCont
Close #Fn
End Sub
由于重写入的内容长度要小于原来的内容长度,所以需要握枯仔删除原来文件重写。
如果不想使用Kill "c:\abc.txt"删除文件后重写则可能需要用到其他文件操作的api,比较麻烦就不在这里用了。