设有1.txt 和2.txt两个文本文件,2个文件里有很多条记录,1条记录1行。每条记录46个字符,但每行都有换行回车,最后一行没有换行回车,所以如果有11条记录,总大小是(46+2)*10+46。
我想做一个字符串对比的小程序,要把1.txt里有而2.txt里没有的那些记录存到3.txt里。
我的做法是从1.txt取一条记录,逐一与2.txt里的记录对比,如果相同则退出,取1.txt的下一条记录。“相同”的判断规则是只要对比的两条记录的第13至37个字符相同,就判定2条记录相同,如123456789012aaaaaaaaaaaaaaaaaaaaaaaa1111111111和
333333333333aaaaaaaaaaaaaaaaaaaaaaaa2222222222是相同的
程序如下
但出错,请各位大虾指点Private Sub Command1_Click()
Dim first As String * 48, second As String * 48
Dim linenum2 As Integer, counter2 As Integer
first = ""
second = ""
Open "1.txt" For Input As #1
Open "2.txt" For Input As #2
Open "3.txt" For Output As #3 linenum2 = (LOF(2) - 46) / 48 + 1'统计2.txt的行数 Do While Not EOF(1)
Line Input #1, first
Do While Not EOF(2)
counter2 = counter2 + 1
Line Input #2, second
If Mid(first, 13, 37) = Mid(second, 13, 37) Then
Exit Do
Else
If counter2 >= linenum2 Then
Print #3, Trim(first)
Exit Do
End If
End If
Loop
Loop
Close #1
Close #2
Close #3
End Sub提问:
1 1.txt和2.txt都是2M左右大小的,是否文件太大了
2 有没有直接统计行数的函数
3 我在用逐句调试时,本地窗口里的first变量永远是"abc","abc"是我第一次调试时1.txt的第一行,但我后来把1.txt删了重新输入其他字符串,本地窗口里的first变量还是abc",怎么回事啊
我想做一个字符串对比的小程序,要把1.txt里有而2.txt里没有的那些记录存到3.txt里。
我的做法是从1.txt取一条记录,逐一与2.txt里的记录对比,如果相同则退出,取1.txt的下一条记录。“相同”的判断规则是只要对比的两条记录的第13至37个字符相同,就判定2条记录相同,如123456789012aaaaaaaaaaaaaaaaaaaaaaaa1111111111和
333333333333aaaaaaaaaaaaaaaaaaaaaaaa2222222222是相同的
程序如下
但出错,请各位大虾指点Private Sub Command1_Click()
Dim first As String * 48, second As String * 48
Dim linenum2 As Integer, counter2 As Integer
first = ""
second = ""
Open "1.txt" For Input As #1
Open "2.txt" For Input As #2
Open "3.txt" For Output As #3 linenum2 = (LOF(2) - 46) / 48 + 1'统计2.txt的行数 Do While Not EOF(1)
Line Input #1, first
Do While Not EOF(2)
counter2 = counter2 + 1
Line Input #2, second
If Mid(first, 13, 37) = Mid(second, 13, 37) Then
Exit Do
Else
If counter2 >= linenum2 Then
Print #3, Trim(first)
Exit Do
End If
End If
Loop
Loop
Close #1
Close #2
Close #3
End Sub提问:
1 1.txt和2.txt都是2M左右大小的,是否文件太大了
2 有没有直接统计行数的函数
3 我在用逐句调试时,本地窗口里的first变量永远是"abc","abc"是我第一次调试时1.txt的第一行,但我后来把1.txt删了重新输入其他字符串,本地窗口里的first变量还是abc",怎么回事啊
解决方案 »
- <求助> VB 怎样防止窗体移出屏幕
- VB强制还原数据库错误 [DBNETLIB][ConnectionWrite (send()).]一般性网络错误。请检查网络文档
- 哪位高手帮我做个题呀,关于MSCOMM的
- 如何用VB实现给TreeView加上背景图片
- 得到系统加载的硬件系统
- 用VB能否做个IE插件?象3721那样的,可以显示在IE工具栏上!具体如何实现?谢谢!
- 用vb做个连接网站的快捷方式
- 今天高兴,来散分
- 请教索引问题
- 请教 VB全球技术支持 IIS 假死问题
- 请个位帮个忙,先谢谢了啊!
- 关于使用pdf.ocx控件的问题-------------------------------在线等待---------满分-------(解决就给)
Open app.path & "/1.txt" For Input As #1 Do While (Not EOF(1))
Line Input #1, strTemp
List1.AddItem strTemp
Loop
Close #1
2.txt读到list2中,同样的道理
然后比较list1和list2中的就行了,满足条件的加如list3中,这样的话你就不用统计满足条件的条数了,完成比较后直接看list3.listcount就可以了,把list3中的数据写到3.txt中去适当的给几个进度条比较好一点
dim i as Integer ,dim j as Integer ,x as boolean
for i=1 to list1.listcount
for j=1 to list2.listcount
if mid(list1.list(i),13)=mid(list2.list(j),13) then
x=true
else
x=false
end if
next
if x=false then
list3.additem list1.item(i)
end if
next
你试下看有没有问题先吧
Private Sub Command1_Click()
Dim first As String * 24, second As String * 24
Dim linenum2 As Long, counter2 As Long
first = ""
second = ""
Open "D:\新建文件夹\1.txt" For Input As #1
Open "D:\新建文件夹\2.txt" For Input As #2
Open "D:\新建文件夹\3.txt" For Output As #3 linenum2 = (LOF(2) - 24) / 26 + 1 Do While Not EOF(1)
Line Input #1, first
Seek #2, 1
Do While Not EOF(2)
counter2 = counter2 + 1
Line Input #2, second
' If Mid(first, 13, 24) = Mid(second, 13, 24) Then
If first = second Then
counter2 = 0
Exit Do
Else
If counter2 >= linenum2 Then
Print #3, first
counter2 = 0
Exit Do
End If
End If
Loop
Loop
Close #1
Close #2
Close #3
End
End Sub