| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:求版主帮忙,还是读取数据的问题
只看楼主 加入收藏
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
结帖率:83.33%
收藏
 问题点数:0 回复次数:12 
求版主帮忙,还是读取数据的问题
现在我有一个tser数据,我编写了如下代码
Open "C:\Users\DELL\Desktop\001.tser" For Input As #1
  Do While Not EOF(1)
    ReDim s1(i)
    Line Input #1, s
    s1(i) = s
'  Print s1(i)
    i = i + 1
  Loop
  While InStr(s, "  ") '空格处理
    s = Replace(s, "  ", " ")
    Wend
 '   Print s
Close #1
   s1 = Split(s, vbCrLf)
  Print UBound(s1)
这里print 输出的 ubound(s1)为0
这是为什么呢,大神帮我看看,我主要就是想能够把这个s分行就可以
这是附件数据
001.zip (1.87 KB)
搜索更多相关主题的帖子: Desktop Users 
2013-07-31 21:50
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
在补充一下,就是要很多次要读入这样的数据,我是不是需要建立一个function函数来做或者是添加成模块呢
其次vb中批处理怎么做啊?
问题比较多,希望有一位好心人帮助做我的师傅谢谢了

[ 本帖最后由 lovechang198 于 2013-7-31 21:57 编辑 ]
2013-07-31 21:54
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
通过分析,你的文件中已经包含换行符(asc码10),获取所需数据的代码如下:
Dim s1() As String, s As Byte, b As String, i As Integer
Open "C:\001.tser" For Binary As #1
  b = ""
  Do While Not EOF(1)
    Get #1, , s         '读入一个字节
    b = b & Chr(s)      '转换为字符
  Loop
Close #1
s1 = Split(b, Chr(10))  '以换行符分解为数组
For i = 0 To UBound(s1)
  Do
    b = s1(i)
    s1(i) = Replace(s1(i), "  ", " ")  '对数组所有元素消空格
  Loop Until s1(i) = b
  Print s1(i)
Next
2013-07-31 23:10
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:653
专家分:3402
注 册:2008-5-7
收藏
得分:0 
最接近你的代码也可以完成所需功能,如下:
Dim s1() As String, s As String, b As String, i As Integer
Open "C:\Users\DELL\Desktop\001.tser" For Input As #1
  b = ""
  Do While Not EOF(1)
    Line Input #1, s       '读入一行数据,实际只有一行就全部读入
    b = b & s              '叠加所有行数据
  Loop
Close #1
s1 = Split(b, Chr(10))  '以换行符分解为数组
For i = 0 To UBound(s1)
  Do
    b = s1(i)
    s1(i) = Replace(s1(i), "  ", " ")  '对数组所有元素消空格
  Loop Until s1(i) = b
  Print s1(i)
Next
2013-07-31 23:14
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
ReDim s1(i)                  重定义数组大小,会导致数组内容被清空
    Line Input #1, s             读一行,会自动省略 vbcrlf
    s1(i) = s                    把刚读的数据放到数组的最后一个元素里
然后你又是在循环里读。
得到的结果是,
s 是最后一个行的内容,不包含 vbcrlf
s1() ,总元素个数是行数,但内容只包含最后一行的内容。

---------------
  While InStr(s, "  ") '空格处理
    s = Replace(s, "  ", " ")
    Wend

这里,根据上面的内容,你也只能 最后一行进行了处理。

------------
   s1 = Split(s, vbCrLf)
  Print UBound(s1)
又重置了 S1 。用最后一行按 VBCRLF 进行分解,因为最后一行不包含空上字符,所以只有一个元素。

授人于鱼,不如授人于渔
早已停用QQ了
2013-08-01 08:26
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 5楼 风吹过b
如果这样的话那s应该只有最后一行的内容
但是我print s时整个文件的字符都有是怎么回事呢?
2013-08-01 09:35
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 2楼 lovechang198
谢谢您,给的代码可以完成。
2013-08-01 09:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
'  Print s1(i)

这句是在循环里执行,每次都把每行的读到的数据显示出来,显示后又自动换行。
那自然是整个文件的内容啊。

你显示了内容后,又把这个内容给丢掉了,所以后面处理时,就没内容了。

授人于鱼,不如授人于渔
早已停用QQ了
2013-08-01 10:36
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 8楼 风吹过b
怪不得这样呢,谢谢你,感觉这个论坛充满爱啊
2013-08-01 15:33
lovechang198
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2013-7-19
收藏
得分:0 
回复 8楼 风吹过b
还有一个问题就是这个帖子里面2楼我说的。
我有很多次要读取这种数据,而且最后要得到的数据基本都是数组,这样做一个function函数或者过程是不是比较好呢
另外批处理是怎么回事,是不是我可以把所有的读入数据的过程全部交给批处理来做?
2013-08-01 16:02
快速回复:求版主帮忙,还是读取数据的问题
数据加载中...
 
   



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

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