| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4641 人关注过本帖
标题:求教删除文本文件的最后一行
只看楼主 加入收藏
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:3 
求教删除文本文件的最后一行
A121NA_S05601_40_1.rar (1.71 KB)
      
A121NA_S05601_40_1-目标.rar (1.7 KB)


附件说明:    附件1解压后的文件后缀名虽为dat,内容实为TXT文件。用UltraEdit打开,共有562行。
              附件2是希望达到的效果。
想要达到的效果:查找文件中是否含有“TOTAL PASS”行,如有,MsgBox "已找到",删除该行及以下所有行,用UltraEdit打开,剩有560行(其实就是满足产找条件后,删除最后两行,一行是含有“TOTAL PASS”行,一行是空行。);如没有,MsgBox "没找到",没有其他操作。

现状:    1、“查找文件中是否含有“TOTAL PASS”行”语句不会写,
          2、自己写的删除语句的确是把含有“TOTAL PASS”行删掉了,但是同时把文本中所有空行都删掉了,文件最后还剩两个空行,整个文件内部的格式就变了。

自己写的删除语句如下:
Dim i As Long, s As String
i = FreeFile
Open (Dir1.Path & "\" & File1.FileName) For Input As #i
     s = StrConv(InputB(LOF(i), i), vbUnicode)
Close #i
i = FreeFile
Open (Dir1.Path & "\" & File1.FileName) For Output As #i
     Print #i, Replace(Replace(s, "TOTAL PASS", ""), vbCrLf & vbCrLf, vbCrLf)
Close #i


请各位帮忙    1、“查找文件中是否含有“TOTAL PASS”行”语句怎么写?
              2、删除语句有什么错误?
              3、第一条和第二条如何进行功能合并?
搜索更多相关主题的帖子: 文本文件 
2016-10-05 01:13
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:10 
这段时间比较忙碌,如果在这里实在没有人能够帮助到你,再来加我QQ帮助你吧!Sorry

本人QQ:775420425
2016-10-05 16:05
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:10 
你的代码其实并没有删除“TOTAL PASS”行,只是替换为空了。
至于你的代码效果不理想,应该就是Replace(Replace(s, "TOTAL PASS", ""), vbCrLf & vbCrLf, vbCrLf)。本身好像没有问题
估计是文本的格式问题,比如,其中可能并不是用回车符换行。 具体我也懒得给你细看了,你自己可以加中断仔细看一下。
如果对同一个文件进行操作,应该是不行的,因为open语句的For Input、For Output限制了其只能是读或者写,不能同时。 也许其他的方法可以实现,等其他人告诉你吧。
如果可以存为另外一个文件很简单,逐行遍历就可以了

程序代码:
Dim OutPt as boolean
OutPt =true
Open File1 for input  as #1
Open File2 for output as #2
Do while not EOF(1)

 line input #1,a

 if instr(a, "TOTAL PASS") then OutPt =false

 if OutPt and trim(a)<>"" then print #2, a
Loop
2016-10-05 16:16
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
非常感谢 hjxlj 大神和 xiangyue0510 版主的回复!
您两位的详细的回复向我传授了很多有用的知识,可以看出二位是真心无私的、毫无保留的想要帮助一个新手,再次非常感谢!
认真拜读了回复后,我在网络中再次寻找,终想于找到一段源码,经过修改并试用后,能够达到我的使用要求,现把它贴上来,一是向两位大神做一个汇报,二来希望能帮助一些有我同样或类似要求的朋友。
Private Sub Command1_Click()
Dim i As Long, s As String
i = FreeFile
Open "c:\A121NA_S05601_40_1.dat" For Input As #i
     s = StrConv(InputB(LOF(i), i), vbUnicode)
Close #i
If InStr(1, s, "TOTAL PASS") = 0 Then
MsgBox "没找到"
Else
MsgBox "找到了"
F "c:\A121NA_S05601_40_1.dat"
MsgBox "删除了"
End If
End Sub

Sub F(ByVal Path As String)
On Error GoTo eHandler:
Dim Fc As String, Fn() As String, i As Integer
Open Path For Binary As #1
Fc = Space(LOF(1))
Get #1, , Fc
Close #1
Fn = Split(Fc, vbCrLf)
Do Until Fn(UBound(Fn)) <> ""       '删除了最后一行不为空的行——也就是删掉一行有数据的行
ReDim Preserve Fn(UBound(Fn) - 1)
DoEvents
Loop
Do Until Fn(UBound(Fn)) = ""         '删除了最后一行为空的行——也就是删掉一行空行
ReDim Preserve Fn(UBound(Fn) - 1)
DoEvents
Loop
If UBound(Fn) <= 0 Then
Open Path For Output As #1
Print vbNullString
Close #1
Else
ReDim Preserve Fn(UBound(Fn) - 1)
Open Path For Output As #1
For i = 0 To UBound(Fn)
Print #1, Fn(i)
Next
Close #1
End If
Exit Sub
eHandler:
MsgBox "Error # " & Err.Number & " was generated by " & Err.Source & Chr(13) & Err.Description, vbCritical, "Error", Err.HelpFile, Err.HelpContext
Err.Clear
End Sub
2016-10-06 00:38
快速回复:求教删除文本文件的最后一行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016947 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved