首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

急VB读取TXT数据解决方法

2013-02-15 
急!VB读取TXT数据本帖最后由 xiaoyuzhoua 于 2013-01-23 10:44:22 编辑读取TXT内的数据,如下:太阳高度角和

急!VB读取TXT数据
本帖最后由 xiaoyuzhoua 于 2013-01-23 10:44:22 编辑 读取TXT内的数据,如下:

  太阳高度角和方位角 Sunlight三维日照分析软件     
------------------------
时间:3月21日
北纬:31度12分   东经:121度26分
日出: 05时56分   日落:18时06分   正午:12时01分
日长: 12时11分

北京时间(hh:mm)       高度角(度)       方位角(度)
05:56                   -1.321               -90.995
05:57                   -1.107               -90.866
05:58                   -0.893               -90.736
.........
注:计算结果由.....


想要提取TXT文件内的北京时间,高度角,方位角三列数据存取到一个数组当中,并统计出有多少行数据?
应该如何写代码。
小弟刚接触VB编程,各位大侠指导一下,感激不尽!!!! TXT vb 编程
[解决办法]
' VB 读取文本文件,每次读一行,如
Dim strTemp As String 
Open "C:\test" For Input #1
Do while NOT EOF(1)
   Line Input #1, strTemp  ' 这里就是每次读一行的文本内容
   Debug.Print strTemp     ' 输出每次读到的文本
Loop
Close #1

' VB 分析字符串
Dim strArray() As String
' 替换Tab符号变为一个空格
strTemp = Replace(strTemp,vbTab, " ", , , vbTextCompare) 
' 替换两个空格变为一个空格
strTemp = Replace(strTemp,"  ", " ", , , vbTextCompare) 
strArray = Split(strTemp," ")   ' 以空格为分割符号将文本分割成一段一段的字符串放到字符串数组中
If Ubound(strArray)=2 Then
   ' 判断被分割的字符串数组边界范围是否为2,因为数组是从0开始的,0、1、2 就有三个元素
   ' 你要识别的是 "05:56                   -1.321               -90.995"
   ' 这端有三个元素,分析出来应该是
   ' strArray(0) = "05:56"
   ' strArray(1) = "-1.321"
   ' strArray(2) = "-90.995"
   ' 所以就先用数组边界来过滤掉不是这个格式的数据,当然,最好多点过滤和验证数据格式过程
   ' 在这里我就不多说了
   Debug.Print strArray(0)     ' 输出分析后的文本
end if

[解决办法]
这样做:

Dim strLine As String, strItems() As String, strArray() As String, n As Long 
Open "C:\test" For Input #1
n = 0
Redim strArray(2, n)
Do Until EOF(1)
    Line Input #1, strLine
    If IsDate(Left(strLine), 5) Then
        Do While(Instr(strLine, Space(2))
            strLine = Replace(strLine, Space(2), Space(1))


        Loop
        strItems = Split(strLine, Space(1))
        If Ubound(strItems) = 2 Then
            strArray(0, n) = strItems(0)
            strArray(1, n) = strItems(1)
            strArray(2, n) = strItems(2)
            n = n + 1
            Redim Preserve strArray(2, n)
        End If
    End If
Loop

最后得到的 n 就是行数。
strArray 的第一个索引和列号,第二个是行号。都是 0 为基数的。

热点排行