最近用vb在写一个软件,用到了对文件的写入、替换、删除操作,对网友的代码进行了修改,写入模块和函数,能够实现上述功能。
![](http://image109.360doc.com/DownloadImg/2019/12/2213/178566983_1_2019122201420350)
有5个文本框,以前四个文本框的内容为判别条件,即:如果保存的文件中某行前四项(以空格为区分)与文本框中的Text1、Text2、Text3、Text4相同,点击“替换某行”按钮可以将Text1-Text5中的内容替换到原文件中。点击“删除某行”则删除文件中与Text1-Text4相同的那一行。插入某行还没有用到,没有测试。
Dim MonitorSetFile As String '文件名 Private Sub Command1_Click() MonitorSetFile = App.Path + "\InstMonitorSet.dat" ThisInst = Text1.Text + " " + Text2.Text + " " + Text3.Text + " " + Text4.Text + Text5.Text Open MonitorSetFile For Append As #1 '以追加方式打开文件 'Print #1, '为防止原文件末尾没有换行,而加入的换行 Print #1, ThisInst '加入一个空行,为新加入内容的加入时间,若不需要可删除或注释它 Private Sub Command2_Click() MonitorSetFile = App.Path + "\InstMonitorSet.dat" Call ModifyInstSet(MonitorSetFile, MonitorSetFile, RowNumber, "替换") Function FindRow(ByRef FindTheRow As Long) Dim ThisYqSetInfo() As String Dim SearchHang As Long '查找待替换信息所在行 Open MonitorSetFile For Input As #1 SearchHang = SearchHang + 1 ThisYqSetInfo = Split(SmText, " ") '将行文本内容以空格为区分读进数组 If ThisYqSetInfo(0) = Text1.Text And ThisYqSetInfo(1) = Text2.Text And ThisYqSetInfo(2) = Text3.Text And ThisYqSetInfo(3) = Text4.Text Then 'Dim FileNumber As Integer '文件号 'Dim FileHangSum As Integer '文件行数 'Dim FileHangText As String '文件某行文本 'Open MonitorSetFile For Input As #2 ' Line Input #2, FileHangText ' FileHangSum = FileHangSum + 1 'Print "a文件中共有:" & FileHangSum & "行" Private Sub Command3_Click() MonitorSetFile = App.Path + "\InstMonitorSet.dat" Call ModifyInstSet(MonitorSetFile, MonitorSetFile, RowNumber, "删除") Private Sub Command4_Click() MonitorSetFile = App.Path + "\InstMonitorSet.dat" Call ModifyInstSet(MonitorSetFile, MonitorSetFile, RowNumber, "插入") Command1.Caption = "写入文件" Command2.Caption = "替换某行" Command1.Caption = "删除某行" Command1.Caption = "插入某行"
将下面的代码拷贝到标准模块中:
'删除、替换文件中一行,或者插入内容到文本中某一行 Public Function ModifyInstSet(strSourceFile As String, strTargetFile As String, intRow As Long, CommandCode As String) Dim FileContents As String Dim ReplaceContent As String '要替换的文本 Open strSourceFile For Binary As #Filenum FileContents = Space(LOF(Filenum)) Get #Filenum, , FileContents FileInfo = Split(FileContents, vbCrLf) If Dir(strTargetFile, vbNormal) <> "" Then If CommandCode = "替换" Then ReplaceContent = Form1.Text1.Text + " " + Form1.Text2.Text + " " + Form1.Text3.Text + " " + Form1.Text4.Text + " " + Form1.Text5.Text Open strTargetFile For Append As #Filenum For ThI = 0 To UBound(FileInfo) - 1 Print #Filenum, ReplaceContent '替换的行 Print #Filenum, FileInfo(ThI) '保留原来的行 ElseIf CommandCode = "删除" Then Open strTargetFile For Append As #Filenum For ThI = 0 To UBound(FileInfo) - 1 If ThI <> intRow - 1 Then Print #Filenum, FileInfo(ThI) ElseIf CommandCode = "插入" Then Open strTargetFile For Append As #Filenum InsertContent = Form1.Text1.Text + " " + Form1.Text2.Text + " " + Form1.Text3.Text + " " + Form1.Text4.Text + " " + Form1.Text5.Text For i = 0 To UBound(FileInfo) - 1 Print #Filenum, InsertContent Print #Filenum, FileInfo(i) '保留原来的行,位置后移一位
|