1、点击“读取”按钮执行以下代码: Dim FileName As String Dim s1 As String Text1.Text = "" FileName = App.Path + "\" + "1.txt" '----假设文本文件的名为1.txt Open FileName For Input As #1
2、 Do While Not EOF(1) Line Input #1, s1 Text1.Text = Text1.Text + s1 + Chr(13) + Chr(10) Loop Close #1 vb读取文本文件一行中的固定位置的变量 例如下面一行中 0507 99 16 98 16 98 160507 (94 11
3、 97 230503 各个数字都是变量(每分钟一变)我想从中读取括号内两个变量(括号并不存在)这两个变量在这行中的位置是固定的,请问如何实现 希望各位高手不吝赐教vb详细代码 Dim s$, ss() As String s = "0507 99 16 98 16 98 160507 94 11 97 230503" ss = split(s) msgbox ss(7) & "," & ss(8) '显示“94,11” Dim s$, s1$, k&, ss() As String, i& s = "0104 69 90 12 16 98 160 5
4、7 94 11 97 30503 12123 6767 778 999" k = 37 s1 = Right$(s, Len(s) - k + 1) ss = Split(s1, " "): s = "" For i = 0 To 3 s = s & ss(i) & vbCrLf Next MsgBox s '四个数 读取zz.txt的代码: Private Type zdz_zz '218字节,----、////表示缺测或无记录 s1 As String * 4 '北京时间,如0800 s2 As String * 4 '2分钟风向
5、 s3 As String * 4 '2分钟平均风速 s4 As String * 4 '10分钟平均风向 s5 As String * 4 '10分钟平均风速 s6 As String * 4 '最大风速时风向 s7 As String * 4 '最大风速 s8 As String * 4 '最大风速时间 s9 As String * 4 '瞬时风向 s10 As String * 4 '瞬时风速 s11 As String * 4 '极大风向 s12 As String * 4 '极大风速
6、 s13 As String * 4 '极大风速时间 s14 As String * 4 '雨量 s15 As String * 4 '干球温度 s16 As String * 4 '最高气温 s17 As String * 4 '最高气温出现时间 s18 As String * 4 '最低气温 s19 As String * 4 '最低气温出现时间 s20 As String * 4 '湿球温度 , ****为冬季湿球停用 s21 As String * 4 '湿敏电容湿度值 s22 As Strin
7、g * 4 '相对湿度 s23 As String * 4 '最小相对湿度 s24 As String * 4 '最小相对湿度出现时间 s25 As String * 4 '水汽压 s26 As String * 4 '露点温度 s27 As String * 4 '本站气压,如 0235,9999 s28 As String * 4 '最高本站气压 s29 As String * 4 '最高本站气压出现时间 s30 As String * 4 '最低本站气压 s31 As String * 4 '最低本
8、站气压出现时间 s32 As String * 4 '草面(雪面)温度 s33 As String * 4 '草面(雪面)最高温度 s34 As String * 4 '草面(雪面)最高时间 s35 As String * 4 '草面(雪面)最低温度 s36 As String * 4 '草面(雪面)最低时间 s37 As String * 4 '地面温度 s38 As String * 4 '地面最高温度 s39 As String * 4 '地面最高出现时间 s40 As String * 4 '地面
9、最低温度 s41 As String * 4 '地面最低出现时间 s42 As String * 4 '5厘米地温 s43 As String * 4 '10厘米地温 s44 As String * 4 '15厘米地温 s45 As String * 4 '20厘米地温 s46 As String * 4 '40厘米地温 s47 As String * 4 '80厘米地温 s48 As String * 4 '160厘米地温 s49 As String * 4 '320厘米地温 s50 As S
10、tring * 4 '蒸发量 s51 As String * 4 '日照 s52 As String * 5 '能见度 s53 As String * 5 '最小能见度 s54 As String * 4 '最小能见度出现时间 End Type Private Sub Command1_Click() Dim d As zdz_zz, f1%, zz$, ss$ zz = "d:\zdz\zz.txt" f1 = FreeFile: Open zz For Random As #f1 Len = Len(d): Get #f1, 1,
11、d: Close #f1 ss = "" ss = ss & "当前气温=" & Val(d.s15) / 10 & vbCrLf ss = ss & "相对湿度=" & Val(d.s22) & vbCrLf ss = ss & "地面温度=" & Val(d.s37) / 10 MsgBox ss End Sub 使用matlab进行数据批处理! 鉴于多数人对于高级语言不是很熟练,这里我使用matlab为例进行数据的批处理工作。 考虑一个文件件内有n个同一属性的数据文件,每个文件代表不同的年份,怎么对于这些文件进行统计整理? 下面是代码: 输入,比如在某文
12、件夹内有n个txt或是dat等格式的文件,现在要一次性读入matlab: %method 1: cd f:\xxx %xxx即是文件所在文件夹。 dat=struct2cell(dir); for i=1:length(dat)-2 data{i}=importdata(dat{1,i+2}); %使用元胞数组存储各文件中的内容。 end %method 2: dat1=dir('f:\data'); for i=1:length(dat1)-2 data1{i}=importdata(dat1(i+2).name); end 多文件的输出: 考虑
13、这个问题,我们必须先生成一个可以产生连续整数序列的函数生成注入001、002、003、……、999 类似整数。 我写了一个,作为参考: function b=fullnum(n) if n~=floor(n)||n<=0||n>9999 fprintf('Error:The number is not allowed float-point,less than 0 or larger than 9999!\n'); return; end b={}; for i=1:n if i<10^floor(log10(n)) b{i}=strcat(char(
14、ones(1,floor(log10(n))-floor(log10(i)))*48),int2str(i)); else b{i}=int2str(i); end end end 下面使用类似这个的模板,存储一个元胞数组的内容到一系列连续文件名的文件: mkdir F:\data name=fullnum(41); for i=1:41 a=data{i}; save(strcat('F:\data\data',name{i},'.txt'),'a','-ascii'); end 你要将A文件中的天气现象代码与同一天的时间等区分开来,其
15、次不知你注意没有,我们青海省milos500自动站就带有天气现象字体,分别是ACW.FON,以及系统盘windows的fonts文件夹下的EUDC.EUF,EUDC.TTE三个文件,有了他们,天气现象代码可以判断对应还原,用if语句,或者select都可以,如: dim tqdm as string'天气代码 dim tqxx as string'天气现象符号 if tqdm="17" then tqxx= Chr(63678) end if 具体你可以试一下我在气象软件板块做的适合于青海省的A文件要素提取工具。以下是我在A文件要素提取工具中使用的一个函数,不过
16、是天气现象转换为代码,函数如下: Private Function txz(tx) As String '天气现象转换为对应的数字 If tx = Chr(63663) Then '为露 txz = "01" End If If tx = Chr(63664) Then '为霜 txz = "02" End If If tx = Chr(63671) Then '为结冰 txz = "03" End If If tx = C
17、hr(63675) Then '为烟幕 txz = "04" End If If tx = Chr(63676) Then '为霾 txz = "05" End If If tx = Chr(63674) Then '为浮尘 txz = "06" End If If tx = Chr(63673) Then '为扬沙 txz = "07" End If If tx = Chr(63677) Th
18、en '为尘卷风 txz = "08" End If If tx = Chr(63662) Then '为轻雾 txz = "10" End If If tx = Chr(63679) Then '为闪电 txz = "13" End If If tx = Chr(63680) Then '为极光 txz = "14" End If If tx = Chr(63681) Then '为大风
19、 txz = "15" End If If tx = Chr(63670) Then '为积雪 txz = "16" End If If tx = Chr(63678) Then '为雷暴 txz = "17" End If If tx = Chr(63682) Then '为飑 txz = "18" End If If tx = Chr(63669) Then '为龙卷 txz =
20、 "19" End If If tx = Chr(63672) Then '为沙尘暴 txz = "31" End If If tx = Chr(63667) Then '为吹雪 txz = "38" End If If tx = Chr(63668) Then '为雪暴 txz = "39" End If If tx = Chr(63661) Then '为雾 txz = "42"
21、 End If If tx = Chr(63666) Then '为雾凇 txz = "48" End If If tx = Chr(63651) Then '为毛毛雨 txz = "50" End If If tx = Chr(63665) Then '为雨凇 txz = "56" End If If tx = Chr(63649) Then '为雨 txz = "60" End If
22、 If tx = Chr(63657) Then '为雨夹雪 txz = "68" End If If tx = Chr(63652) Then '为雪 txz = "70" End If If tx = Chr(63660) Then '为冰针 txz = "76" End If If tx = Chr(63655) Then '为米雪 txz = "77" End If If tx = C
23、hr(63683) Then '为冰粒 txz = "79" End If If tx = Chr(63650) Then '为阵雨 txz = "80" End If If tx = Chr(63658) Then '为阵性雨夹雪 txz = "83" End If If tx = Chr(63653) Then '为阵雪 txz = "85" End If If tx = Chr(63654)
24、 Then '为霰 txz = "87" End If If tx = Chr(63659) Then '为冰雹 txz = "89" End If End Function 对A文件部分气象要素的提取 为弄清楚与气象因子相关的逐步回归方程,写了下面一段程序,用来提取A文件中部分要素值,刚学的编程,写得很杂乱,但还好,可以通过测试。 '从每月A文件中分别读取气压、温度、湿度、风向、风速、降水、能见度、总云量、低云量、地温、日照,分别存入相应二唯数组(I表示日期,J表示小时),并写入文件中,
25、提取的A文件格式为基准站格式。 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim textfile As String OpenFileDialog2.ShowDialog() textfile = OpenFileDialog2.FileName Dim aYear1, aMonth1, aYear, aMonth As String
26、 aYear = textfile.Substring(16, 4) aMonth = textfile.Substring(20, 2) ListBox1.Items.Add(textfile) Dim sr As IO.StreamReader = IO.File.OpenText(textfile) Dim qiya As String Dim a As Integer = 500 Dim c As Integer c = bc(aYear, aMon
27、th) Dim row, s, one(100), two(), wendu(a, 24), yali(a, 24), shidu(a, 24), fengxiang(a, 24), fengsu(a, 24), jiangshui(a, 24), _ wendu1(a, 24), yali1(a, 24), shidu1(a, 24), fengxiang1(a, 24), fengsu1(a, 24), jiangshui1(a, 24), _
28、 Na(a, 24), Na1(a, 24), Nb(a, 24), Nb1(a, 24), Va(a, 24), Va1(a, 24), Da(a, 24), Da1(a, 24), Sa(a, 24) As String Dim i, j, p, numlines, upperbound As Integer p = 0 Do While (sr.Peek <> -1) row = sr.ReadLine numlines += 1 Loop '行
29、数数组下标变量值 upperbound = numlines - 1 sr.Close() sr = IO.File.OpenText(textfile) For i = 0 To upperbound row = sr.ReadLine If row = "PC" Then '从A文件中提取气压要素并存入数组 yali(a, j)中 a = 1 row = sr.ReadLine
30、 Do If row.Length >= 59 Then one = row.Split(" ") If a = 1 Then For j = 0 To 3 yali1(c, j + 21) = one(j) Next
31、 End If For j = 4 To 11 yali(a, j - 3) = one(j) Next row = sr.ReadLine two = row.Split(" ") p = row.Length If row.Substr
32、ing((p - 1), 1) <> "=" Then For j = 0 To 11 yali(a, j + 9) = two(j) Next row = sr.ReadLine two = row.Split(" ") For j = 0
33、To 3 yali(a, j + 21) = two(j) Next a = a + 1 Else For j = 0 To 11 yali(a, j + 9) = two(j) Nex
34、t a = a + 1 Exit Do End If End If Loop Until row.Length < 59 End If If row = "TB" Then '从A文件中提取温度要素并存入数组 wendu(a, j)中 a = 1
35、 row = sr.ReadLine Do If row.Length >= 59 Then s = row.Substring(0, 59) one = row.Split(" ") If a = 1 Then For j = 0 To 3
36、 wendu1(c, j + 21) = one(j) Next End If For j = 4 To 11 wendu(a, j - 3) = one(j) Next row = sr.ReadLine s = row.S
37、ubstring(0, 59) two = s.Split(" ") p = row.Length If row.Substring((p - 1), 1) <> "=" Then For j = 0 To 11 wendu(a, j + 9) = two(j) Ne
38、xt row = sr.ReadLine s = row.Substring(0, 59) two = s.Split(" ") For j = 0 To 3 wendu(a, j + 21) = two(j) Next
39、 a = a + 1 Else For j = 0 To 11 wendu(a, j + 9) = two(j) Next a = a + 1 Exit Do End
40、If End If Loop Until row.Length < 59 End If If row = "UB" Then '从A文件中提取湿度要素并存入数组 shidu(a, j)中 a = 1 row = sr.ReadLine Do If row.Length >= 35 Then
41、 one = row.Split(" ") If a = 1 Then For j = 0 To 3 shidu1(c, j + 21) = one(j) Next End If For j = 4 To 11
42、 shidu(a, j - 3) = one(j) Next row = sr.ReadLine two = row.Split(" ") p = row.Length If row.Substring((p - 1), 1) <> "=" Then For j = 0
43、To 11 shidu(a, j + 9) = two(j) Next row = sr.ReadLine two = row.Split(" ") For j = 0 To 3 shidu(a, j + 21) = two(j)
44、 Next a = a + 1 Else For j = 0 To 11 shidu(a, j + 9) = two(j) Next a = a + 1
45、 Exit Do End If End If Loop Until row.Length < 35 End If '提取总云量,存入NA(a,j)中 If row = "NA" Then a = 1 row = sr.ReadLine p = row.Length
46、 one = row.Split(" ") If a = 1 Then For j = 0 To 3 Na1(c, j + 21) = one(j) Next End If For j = 4 To 23 Na(a, j - 3) = one(j) Next
47、 Do row = sr.ReadLine p = row.Length one = row.Split(" ") If row.Substring(p - 1, 1) <> "=" Then one = row.Split(" ") For j = 0 To 3
48、 Na(a, j + 21) = one(j) Next a = a + 1 For j = 4 To 23 Na(a, j - 3) = one(j) Next Else row = row.Substring(0, p - 1)
49、 one = row.Split(" ") For j = 0 To 3 Na(a, j + 21) = one(j) Next a = a + 1 For j = 4 To 23 Na(a, j - 3) = one(j)
50、 Next '提取低云量 a = 1 row = sr.ReadLine p = row.Length one = row.Split(" ") If a = 1 Then For j = 0 To 3






