主题:求助!for循环嵌套问题(查过资料,但无法解决,请大虾相助。)。
52aya
[专家分:30] 发布于 2008-01-16 17:24:00
一、模块功能
1、将字符串mapdata按text2。text中的字符生成数组maparray;
2、查找字符串数组maparray中有多少个road。txt中的字符(我用分号分隔)。
二、问题
1、统计从road。txt中第二字符开始结果为0(统计结果应该不为0);
2、输出到text3。text时,从第二行开始一行内的文字分两行排列;
例如正确输出为 AB3
BB4
错误输出为 AB3
B
B4
3、想将统计结果追加到text3。text不成功。
三、已尝试过的方法
1、第一个问题我尝试改变road。txt中字符的排列顺序,结果还是一样;
2、第二个问题我尝试用输出简单的数字(即代码中的x,y),输出结果正确;
3、第三个问题我尝试增加了wordstr变量,结果还是一样。
四、原代码
Private Sub Command1_Click()
maparray = Split(mapdata, Text2.Text)
maploop = UBound(maparray)
Open "road.txt" For Binary As #1
roaddata = StrConv(InputB(LOF(1), 1), vbUnicode)
roadname = Split(roaddata, ";")
roadloop=ubound(roadname)
For y = 0 To roadloop
objsum = 0
For x = 1 To maploop
p = InStr(maparray(x), roadname(y))
If p > 0 And p < 2100 Then
objsum = objsum + 1
End If
Next x
wordstr = wordstr + roadname(y) & Text2.Text & objsum & vbCrLf
Text3.Text = wordstr
Next y
Close #1
End Sub
回复列表 (共10个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-01-16 17:31:00
给出你演算时的mapdata、Text2.Text、"road.txt"的值,看看。
板凳
老大徒伤悲 [专家分:29120] 发布于 2008-01-16 17:37:00
第3个问题,很显然,应该使用:Text3.Text = Text3.text & wordstr才能追加。
3 楼
52aya [专家分:30] 发布于 2008-01-16 17:45:00
一、mapdata的数据(文件有10多M,内容都一样,选了部分)
0101 4501030101004494 aaaa 4501050301 bbbb 4501050301 bbbb 4501050301 bbbb 45010300201001 cccc 完好 在用 2007-5-10 实测 0.70m 铸铁 0101 4501030101004494 aaaa 4501050301 bbbb 4501050301 bbbb 4501050301 bbbb 45010300201001 cccc 完好 在用 2007-5-10 实测 0.70m 铸铁
二、text2.text的数据为aaaa
三、road.txt的数据为cccc;dddd
4 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-16 18:08:00
我运行的结果text3的内容为:
ccccaaaa2
ccccaaaa2
ddddaaaa0
不知道是不是你要的结果?
5 楼
brokenworld [专家分:2640] 发布于 2008-01-16 18:09:00
把string转为byte() ,然后用kmp算法,在处理大文件的时候,比你现在至少快20倍以上,
KMP,就是逐字节对比,当遇到不符合的时候,就立即跳到下一个字节。这个比较适合字串搜索和
出现次数的统计。
6 楼
brokenworld [专家分:2640] 发布于 2008-01-16 18:11:00
经我测试 split的处理速度是很慢的,这个函数没有优化
7 楼
52aya [专家分:30] 发布于 2008-01-16 18:19:00
回老大徒伤悲,我想要的结果如下:
ddddaaaa1
ccccaaaa2
我刚才重新运行的程序,road.txt的内容为 cccc;dddd 结果为
ccccaaaa2
dddd
aaaa0
以上结果也是有问题的,可是改变road.txt的内容为 dddd;cccc 结果就正常了。
ddddaaaa1
ccccaaaa2
改变road.txt的内容为 cccc;dddd 结果就正常了,怎么回事?
ccccaaaa2
ddddaaaa1
8 楼
52aya [专家分:30] 发布于 2008-01-16 18:23:00
回brokenworld
我是个菜鸟,您提供的方法,我先找下资料,实在搞不清楚再向您请教。
9 楼
老大徒伤悲 [专家分:29120] 发布于 2008-01-16 18:28:00
你单步运行看看。你的程序很不好理解。
10 楼
52aya [专家分:30] 发布于 2008-01-19 19:29:00
问题基本解决,是road.txt文件中最后一个字符串引发的,但是原因不是很清楚,空了再慢慢研究。
谢谢大家的帮助。
我来回复