
一个VB读取写入txt文件的问题
自己用vb做了一个简易的记事本程序,就是在C:\a.txt这里建立一个文件,每次打开记事本的时候读取此文件到text1.text中,然后每当text1.text中的内容发...
自己用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 展开
读取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 展开
5个回答
展开全部
我也想过,我现在有一个函数——其实回车就是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)。
'除去两边的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)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Private Sub Text1_Change()内写入文件不太合理。原因有二:一、频繁写入文件浪费时间,如果遇到很大的文件,每次写入都会发生停顿现象,所以效率不高;二、增添了代码处理的长度,而且会产生上述问题。
解决办法是:当文本发生变化时,作个标记就行,当读入新文件时,如果有这个标记,则提示是否存盘,再根据选择是否保存。这样,最多只有一次存盘,则不会出现上述现象。
比如:Private Sub Text1_Change()
text1.tag="1" '表示文本已发生更改
End Sub
解决办法是:当文本发生变化时,作个标记就行,当读入新文件时,如果有这个标记,则提示是否存盘,再根据选择是否保存。这样,最多只有一次存盘,则不会出现上述现象。
比如:Private Sub Text1_Change()
text1.tag="1" '表示文本已发生更改
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s = s & sline & vbCrLf
问题是不在这里
问题是不在这里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
愿意在于你的S末尾总会连接一个vbcrlf,而openfile = s最后openfile就多出一个回车。改为:openfile=left(s,len(s)-1)既可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以试试每次去掉一个回车啊····
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询