所谓删除文本内容,实际上是重写文件。你逐行读出文件,保存到比如 ListBox 中,然后删除文件,创建新文件,写 n - 1 行。如果 ListBox 中只有一行,则删除后不必创建,直接给提示。

解决方案 »

  1.   

    Private Sub Command1_Click()
    Dim strLine As String
    Dim i As Long
        Open App.Path & "\test.txt" For Input As #1
        List1.Clear
        Do Until EOF(1)
            Line Input #1, strLine
            List1.AddItem strLine
        Loop
        Close #1    Kill App.Path & "\test.txt"
        If List1.ListCount > 1 Then
            Open App.Path & "\test.txt" For Output As #1
            For i = 0 To List1.ListCount - 2
                Print #1, List1.List(i)
            Next i
            Close #1
        Else
            MsgBox "文件已经删空。"
        End If
    End SubPrivate Sub Form_Load()
        List1.Visible = False
    End Sub
      

  2.   

    顶一下。xp要淘汰了,还在用VB6呀。
      

  3.   

    哈哈,Win8 支持 VB6 了。
      

  4.   

    很好的回复,谢谢!
    想再问下 如果不借助于listbox,直接利用文件处理 可以实现功能吗?
      

  5.   

    也可以,麻烦一些,还要求文件较小。首先将文件一次性全部读回到字符串变量。此时,至少有两种选择:1 用 Split 函数按行将文件数据切分成字符串数组,strLine = Split(strFileData, vbCrlf),然后将索引 0 至 Ubound(strLine) - 1 的数组写入新文件。类似于写 List 中的列表项。
     
    2 用 InStrRev 查出倒数第一个非空行的回车换行符,用 Left 函数截取此换行符之前的内容,写入新文件。p = InStrRev(strFileData, vbCrLf) - 1If p < 0 Then
        Msgbox "Empty File!"
        Exit Sub
    End If
     
    If p = Len(strFileData) - 2 Then p = InStrRev(strFileData, vbCrLf, p - 1) - 1If p < 0 Then
        Msgbox "Empty File!"
        Exit Sub
    End IfstrFileData = Left(strFile, p)Open App.Path & "\newfile.txt" For Output As #1
    Print #1, strFileData
    Close #1
    这种方法的一个变体是用二进制方式打开文件,Get 数据到一个根据文件长度 Redim 的 Byte 数组中。然后,从后到前搜索连续的 &HD 和 &HA(回车换行符)。找到后,ReDim Preserve 这个数组到不包含这个回车换行符。再将数据 Put 到新文件中。(不要二进制写回源文件,那样的话,后面的东西依然保留着。)实际上,关键的信息是有多少行,或者最后一行在哪里。抓住了关键,其他问题就都不是问题了。
      

  6.   

    朋友,想再请教一问题。在VB6.0中,用文件打开open中 input方式打开一个保存 一组单精度数据 的文本文件,然后用input 依次读到一个单精度数组中,以后利用按钮单击事件 改变数组中某一个值,无错误警告提示,这时程序出现 无响应状态,一直忙碌 。只好用任务管理器关闭visual basic 6.0  。朋友帮我看看究竟怎么回事?我觉得合情合理,难道数组中的值为只读?那也会提示啊  
      

  7.   

    所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。