一个VB读取写入txt文件的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:31:03
自己用vb做了一个简易的记事本程序,就是在C:\a.txt这里建立一个文件,每次打开记事本的时候读取此文件到text1.text中,然后每当text1.text中的内容发生改变就将text1中的内容导入到a.txt文件中~但是发现一个问题,每次打开此程序之后在最后的一行都会多出一个回车,时间长了如果不删除就会有很多很多的回车,很影响使用,我的能力有限,希望高手们能帮帮我,代码如下:

读取a.txt到text1文本框的代码:

Public Function openfile(ByVal filepath As String) As String
Dim s As String
Open filepath For Input As #1
While Not EOF(1)
Line Input #1, sline
s = s & sline & vbCrLf
Wend
Close #1
openfile = s
End Function

Private Sub Form_Load()
Text1.Text = openfile("c:\a.txt")
End Sub

写入txt文本的代码:
Private Sub Text1_Change()
Open "c:\a.txt" For Append As #1
Print #1, Text1.Text
Close #1
End Sub

后面加个分号

Print #1, Text1.Text;

在Private Sub Text1_Change()内写入文件不太合理。原因有二:一、频繁写入文件浪费时间,如果遇到很大的文件,每次写入都会发生停顿现象,所以效率不高;二、增添了代码处理的长度,而且会产生上述问题。
解决办法是:当文本发生变化时,作个标记就行,当读入新文件时,如果有这个标记,则提示是否存盘,再根据选择是否保存。这样,最多只有一次存盘,则不会出现上述现象。
比如:Private Sub Text1_Change()
text1.tag="1" '表示文本已发生更改
End Sub

我也想过,我现在有一个函数——其实回车就是Chr(10) & Chr(13)啦:
'除去两边的10和13
Function EnterTrim(ByVal StrIn As String) As String
Do
If Left(StrIn, 1) = Chr(10) Or Left(StrIn, 1) = Chr(13) Then
StrIn = Right(StrIn, Len(StrIn) - 1)
Else
Exit Do
End If
DoEvents
Loop

Do
If Right(StrIn, 1) = Chr(10) Or Right(StrIn, 1) = Chr(13) Then
StrIn = Left(StrIn, Len(StrIn) - 1)
Else
Exit Do
End If
DoEvents
Loop
EnterTrim = StrIn
End Function
'这个函数可以除去一行文字的首尾的Chr(10)和Chr(13)。

愿意在于你的S末尾总会连接一个vbcrlf,而openfile =