| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1011 人关注过本帖
标题:读取特定行的文件
只看楼主 加入收藏
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:13 
读取特定行的文件
Dim FSO As New FileSystemObject
Dim TS As TextStream
Dim tmp As String
Dim temp() As String
If Dir("C:\Users\DELL\Desktop\11072503.000") <> "" Then
Set TS = FSO.OpenTextFile("C:\Users\DELL\Desktop\11072503.000", ForReading)
For i = 0 To UBound(LonPosition)
Do Until TS.Line = lonposition(i)
TS.SkipLine
Loop
tmp = TS.ReadLine
Print Str
Next i
Else
MsgBox "确认文件路径"
End If

这是附件[local]2[/local]
存在问题:读取到特定行没问题,但是为什么当ts。line>290以后就会出现输入超出文件尾的错误呢。求大神帮忙!!
另外还有一个问题,我有16个这样的文件待读,每个文件要读特定的15行,然后再从其中每一行中摘取特定列数的数据,怎么做才能最省内存,计算的更快一些呢?
这种读取方式与全部input然后split那个更快?
求大神快些解决,急用呀
搜索更多相关主题的帖子: Desktop Users 
2013-08-23 21:18
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
11072503.zip (494.18 KB)

难道没有大神帮忙????
2013-08-23 22:12
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:5 
不知道你的LonPosition是什么,就无法调试你的代码
2013-08-23 22:58
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 3楼 lowxiong
lonposition就是我说的行数的数组,用来数组来存放要读取的15行。。
可以任意设定,如lonposition=split("203,109,005,234,400,123,...",",")
2013-08-24 09:40
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 3楼 lowxiong
这个代码单单读取任意一行没有问题。只要设置一个数就可以了,但是我需要的是数组里面的15个数都单独读,做了一个for循环,但是当循环2次还没到15次就超出文件尾了,不知道为什么
2013-08-24 09:42
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:5 
你把代码贴全了,好不好?这样子贴一小段上来,另外又不把要求讲清楚,鬼知道你想干什么,想实现什么功能。

本人QQ:775420425
2013-08-24 12:07
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 6楼 hjxlj
代码补全也是这样,这个代码就是要读取文件中特定的一些行。lonposition()就是这个行数组.另外在些行中另去一些特定列的数据。一共十几个交叉格点的数据要读取,想要得到最快最省内存的读取方式。
第一个数据的格点比如是(111,35)就是lonposition(0)latposition(0)这两个数组的数据。
Dim FSO As New FileSystemObject
 Dim TS As TextStream
 Dim tmp As String
 Dim temp() As String
dim lonposition() as integer
position=split("111,222,333,123,234,345,321,156,265,190",",")
 If Dir("C:\Users\DELL\Desktop\11072503.000") <> "" Then
 Set TS = FSO.OpenTextFile("C:\Users\DELL\Desktop\11072503.000", ForReading)
 For i = 0 To UBound(LonPosition)
 Do Until TS.Line = lonposition(i)
TS.SkipLine
 Loop
 tmp = TS.ReadLine
 Print Str
 Next i
 Else
 MsgBox "确认文件路径"
End If
2013-08-24 14:58
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:0 
楼主,看样子你对编程不是很熟悉。既然不是很熟悉,拜托你就不要用编程术语来描述你的问题,这样不伦不类的让人更不好理解。建议您从一个完全不懂编程的角度,来描述你的问题,或许我们会更好理解。

本人QQ:775420425
2013-08-24 17:30
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 8楼 hjxlj
好吧,那我在说一遍,文件里有423×549个数据,我只想要其中十几个固定位置的数据,就这么简单,代码主要是省时间要运行比较快。
下面是这些数据的行列位置。比如第一个数据就是取第301行的第205列的那个数据。
301  205
300  203
296  202
280  203
297  209
298  207
304  208
299  210
302  209
279  209
296  208
304  231
298  233
321  232
304  237
304  246
284  239
296  243
307  237
321  244
2013-08-24 20:18
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
试过之后知道问题出在哪里了,如果循环的第一次Do Until TS.Line = 10,那么下一次Do Until TS.Line =(必须大于10).如果小于10就会出现超出文件尾。
2013-08-24 22:26
快速回复:读取特定行的文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017222 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved