多谢大哥,大姐各位的关心,我的代码如下,请麻烦你们看一下; 文本1:a.txt(内有n行记录) 文本2:b.txt(内有n行记录) 文本3:c.txt(用于写文本)Private fso As New FileSystemObject Private fil As File Private ts As TextStream Private fil1 As File Private ts1 As TextStream Private fil2 As File Private ts2 As TextStreamfso.CreateTextFile ("c.txt") Set fil2 = fso.GetFile("c.txt") Set ts2 = fil2.OpenAsTextStream(ForAppending)Set fil = fso.GetFile("a.txt") Set ts = fil.OpenAsTextStream(ForReading) Do While Not ts.AtEndOfStream ts_line = ts.readline ts_xxx = mid(ts_line,1,1) Set fil1 = fso.GetFile("b.txt") Set ts1 = fil1.OpenAsTextStream(ForReading) Do While Not ts.AtEndOfStream ts1_line = ts1.readline ts1_xxx = mid(ts1_line,1,1) if ts_xxx = ts1_xxx thwn ts2.Writeline ts_line End if Loop ts1.close Loop ts.close ts2.close
读文本可以用richtextbox这个控件,速度绝对很快 工程--部件里microsoft rich textbox control 6.0
第二层的 Do While 条件写错了,应该是 Not ts1.AtEndOfStream 吧; 第二层循环中 ts 没有做过 readline 怎么可能到文件结尾呢(除非小于等于一行),死循环,写代码一定要细心。
我查了,没有sleep,能给个例子吗?
要的是不是这个效果: Option ExplicitPrivate Sub Command1_Click() Command2.Enabled = False End SubPrivate Sub Command2_Click() Dim i As Integer
While (Command2.Enabled) DoEvents Wend End Sub
Option ExplicitPrivate Fso As New FileSystemObject Private Fil As File Private Ts As TextStream Private Fil1 As File Private Ts1 As TextStream Private Fil2 As File Private Ts2 As TextStreamPrivate Sub Command2_Click() Dim TA() As String Dim i, ii, Total As Integer Dim Ts_line As String Total = 200Fso.CreateTextFile ("c.txt") Set Fil2 = Fso.GetFile("c.txt") Set Ts2 = Fil2.OpenAsTextStream(ForAppending)Set Fil1 = Fso.GetFile("b.txt") Set Ts1 = Fil1.OpenAsTextStream(ForReading) Do While Not Ts1.AtEndOfStream Ts_line = Ts1.readline i = i + 1 If i > Total Then Total = Total + 100 ReDim Preserve TA(Total) End If TA(i) = Left(Ts_line, 1) Loop Ts1.CloseSet Fil = Fso.GetFile("a.txt") Set Ts = Fil.OpenAsTextStream(ForReading) Do While Not Ts.AtEndOfStream Ts_line = Ts.readline For ii = 1 To i If TA(ii) = Left(Ts_line, 1) Then Ts2.Writeline Ts_line End If Next Loop Ts.Close Ts2.Close End Sub 循环体里不要放那么多无用的东西,读A文件一行就读B文件从头到尾一次,你好厉害啊,电脑好也不要这样折腾啊。
啊,少了句 Total = 200后面请自己添加 ReDim TA(Total)这个程序效果估计应该和你写的一样
一般我是不用FSO的,我喜欢直接用OPEN来打开文件,这是我的习惯。
代码不合理是什么意思?
所以还是建议Timer控件,或使用API函数SetTimer来达到你的要求。
运行时CPU占用99%,运行要耗用很长时间-----------〉说明循环时间长,数据处理复杂或庞大,或有冗余代码,嵌套循环等等....
也许这里有有需要的内容
文本1:a.txt(内有n行记录)
文本2:b.txt(内有n行记录)
文本3:c.txt(用于写文本)Private fso As New FileSystemObject
Private fil As File
Private ts As TextStream
Private fil1 As File
Private ts1 As TextStream
Private fil2 As File
Private ts2 As TextStreamfso.CreateTextFile ("c.txt")
Set fil2 = fso.GetFile("c.txt")
Set ts2 = fil2.OpenAsTextStream(ForAppending)Set fil = fso.GetFile("a.txt")
Set ts = fil.OpenAsTextStream(ForReading)
Do While Not ts.AtEndOfStream
ts_line = ts.readline
ts_xxx = mid(ts_line,1,1)
Set fil1 = fso.GetFile("b.txt")
Set ts1 = fil1.OpenAsTextStream(ForReading)
Do While Not ts.AtEndOfStream
ts1_line = ts1.readline
ts1_xxx = mid(ts1_line,1,1)
if ts_xxx = ts1_xxx thwn
ts2.Writeline ts_line
End if
Loop
ts1.close
Loop
ts.close
ts2.close
工程--部件里microsoft rich textbox control 6.0
VB中不用sleep?
用什么?
使用一门语言就要遵循它的规则,用while的意思就是循环,中间不允许它休息,又要它会休息,你想怎么着?
我的程序运行后,CPU占用99%,内存占用不多,程序显示未响应,但其实程序在运行,只是运行很慢,为什么?
麻繁看看我的代码!不胜感激
第二层循环中 ts 没有做过 readline 怎么可能到文件结尾呢(除非小于等于一行),死循环,写代码一定要细心。
Option ExplicitPrivate Sub Command1_Click()
Command2.Enabled = False
End SubPrivate Sub Command2_Click()
Dim i As Integer
While (Command2.Enabled)
DoEvents
Wend
End Sub
Private Fil As File
Private Ts As TextStream
Private Fil1 As File
Private Ts1 As TextStream
Private Fil2 As File
Private Ts2 As TextStreamPrivate Sub Command2_Click()
Dim TA() As String
Dim i, ii, Total As Integer
Dim Ts_line As String
Total = 200Fso.CreateTextFile ("c.txt")
Set Fil2 = Fso.GetFile("c.txt")
Set Ts2 = Fil2.OpenAsTextStream(ForAppending)Set Fil1 = Fso.GetFile("b.txt")
Set Ts1 = Fil1.OpenAsTextStream(ForReading)
Do While Not Ts1.AtEndOfStream
Ts_line = Ts1.readline
i = i + 1
If i > Total Then
Total = Total + 100
ReDim Preserve TA(Total)
End If
TA(i) = Left(Ts_line, 1)
Loop
Ts1.CloseSet Fil = Fso.GetFile("a.txt")
Set Ts = Fil.OpenAsTextStream(ForReading)
Do While Not Ts.AtEndOfStream
Ts_line = Ts.readline
For ii = 1 To i
If TA(ii) = Left(Ts_line, 1) Then
Ts2.Writeline Ts_line
End If
Next
Loop
Ts.Close
Ts2.Close
End Sub
循环体里不要放那么多无用的东西,读A文件一行就读B文件从头到尾一次,你好厉害啊,电脑好也不要这样折腾啊。
Total = 200后面请自己添加
ReDim TA(Total)这个程序效果估计应该和你写的一样