vb讀取txt的資料
1概述vb通常結合其他的計算工具進行相關的二次開發,在呼叫軟體進行計算時產生的結果檔案很多都是txt格式的,或者有時候為了方便輸出會在計算軟體裡面有意將想要的結果輸出為txt格式的檔案進行儲存。
在vb裡除了需要呼叫計算,還需要對txt的結果進行讀取並顯示,以及做相關的計算。vb在讀取txt資料時用到的幾個主要函式是lineinput和inputstring。本次以一次例項,通過vb讀取並顯示txt檔案的某些資料。
需要讀取的資料如圖1紅色方框標示。該txt檔案一共100多行,需要的資料在第93行和第96行。
圖1資料位置
2方法圖2 vb介面
dim m as integer, n as integer, i as integer, s(1000) as string,str(1000) as string, ss(1000) as string
m = 1
n = 1
dim input1 as integer
dim output1 as integer
input1 = 1
接著讀取txt檔案,讀取時先獲得vb介面得到的檔案位置,採用fileopen函式,**如下:
fileopen(1,檔案位置.text& "\linearstressresults.txt", openmode.input)
得到txt檔案的行數,vb讀取txt檔案是逐行逐行的讀,一般輸出的結果格式都是固定的,具體位置也是固定的,因此可以採用位置控制的方法找到需要的資料。
通過以下**獲取txt檔案的總行數:
dim data1 as string
data1 = ""
do while not eof(1)
data1 = lineinput(1)
m = m + 1
loop
lineinput函式從txt檔案的第一行開始讀,把每一行讀取的字串賦值給變數data1,通過迴圈得到總行數m。
之後關閉已經讀完的檔案,採用fileclose函式:
fileclose(1)
提取第93行的資料時,同樣採用lineinput函式逐行讀取到第93行:
fileopen(1,檔案位置.text& "\linearstressresults.txt", openmode.input)
for i = 1 to (m - 15)
s(i) = lineinput(1) \\\\'讀取一行的字串,一直讀到第m-1行,第m行未讀
next i
str(1) = inputstring(1, 67) \\\\'得到當前字串第67列以前的字串,當前字串為第m行的字串
再通過mid函式得到55列以後的字元:
ss(1) = mid(str(1), 55) \\\\'得到字串str(1)第55列以後的所有字串
第二個資料在第乙個資料的下三行:
lineinput(1)
lineinput(1)
lineinput(1) \\\\'繼續往下讀三行
之後同樣:
str(2) =inputstring(1, 67)
ss(2) = mid(str(2),55)
再之後即可顯示讀取的資料,顯示資料時可以設定小數字數,通過format函式,在使用這個函式之前需要將字串轉換成數值變數,用val函式:
\\\\'膜應力
膜應力.text = format(val(ss(1)), "0.00")
\\\\'point1的膜加彎
膜加彎.text = format(val(ss(2)), "0.00")
最終執行程式即可顯示如圖3:
圖3執行程式
完整的**如下;
privatesubbutton1_click(senderasobject, easeventargs)handlesbutton1.click
dimmasinteger, nasinteger, iasinteger, s(1000)asstring, str(1000)asstring, ss(1000)asstring
m = 1
n = 1
diminput1asinteger
dimoutput1asinteger
input1 = 1
\\\\'得到txt檔案的行數m
output1 = 2
fileopen(1,檔案位置.text &"\linearstressresults.txt",openmode.input)
dimdata1asstring
data1 =""
dowhilenoteof(1)
data1 = lineinput(1)
m = m + 1
loop
fileclose(1)
fileopen(1,檔案位置.text &"\linearstressresults.txt",openmode.input)
fori = 1to(m - 15)
s(i) = lineinput(1)
nexti
str(1) = inputstring(1, 67)
ss(1) = mid(str(1), 55)
lineinput(1)
lineinput(1)
lineinput(1)
str(2) = inputstring(1, 67)
ss(2) = mid(str(2), 55)
膜應力.text = format(val(ss(1)),"0.00")
膜加彎.text =format(val(ss(2)),"0.00")
fileclose(1)
endsub
說明:在讀取一行中的某列數值時,這裡採用的方法比較笨,而如果使用python語言的話,可以直接用函式將讀取的某行字串全部碎片化,按照空格將長字串碎片化為很多小字串。在vb裡面同樣有這樣的函式splits(),為此嘗試採用這種方法試一試。
strrr = split(str(1)," ")
經過測試,發現由於該txt檔案的資料之間的空格不一樣,不太方便操作,如果資料空格數一樣,比如:123456 789
採用split(「123 456 789」,」 「)
可以很方便的得到123,456,789三個字串。
Oracle轉換(顯示轉換)
三種常用的轉換函式 1.to char number character date character 2.to number character number 3.to date character date 一 轉換函式 1.日期到字串的轉換中 to char 引數一,引數二 引數1 日期型值或...
資料轉換 強制轉換
1 2 強制型別轉換 3 1.特點 需要進行特殊的格式處理,不能自動完成。4 2.格式 範圍小的型別 範圍小的變數名 範圍小的型別 原本範圍大的資料 56 注意事項 7 1.強制型別轉換一般不推薦使用,因為有可能發生精度損失 資料溢位。8 2.byte short char這三種型別都可以發生數 算...
C 角度轉換 弧度轉換
收藏 c 角度轉換為弧度 問題 當使用math類的三角函式的時候,所有的單位都是用弧度表示的。你有乙個或多個角是用角度數度量的,並且希望把它們轉換為弧度數,從而可以用它們作為math類的成員。解決方法 要把乙個角度數轉換為弧度數,只要乘以p 180即可 usingsystem publicstati...