忽然發現這一篇是去年3月11日寫的,一年了啊。
今天在乙個西門子的群上,有人問了wincc運算元據庫的問題,我以前自己練習過,群裡面其他熱心的網友也回答得很好。後來我擴充套件性的想了一些應用場景,這些場景實現程式設計需要一些基礎功能。這一片部落格我先不說是假定的什麼樣的場景,先練習基礎功能:建立乙個文字檔案,寫入指定的內容,或者讀取乙個文字檔案。
先練習建立檔案和寫內容吧。新建乙個wincc專案,新增乙個畫面main,上面放乙個按鈕,用於建立檔案和寫入內容。我假定檔案的路徑在wincc專案資料夾下,名字叫做「測試專案.txt」,按鈕的滑鼠點選事件寫入一下vbs指令碼
sub onclick(byval item)
'這是操作檔案的練習,為後面的練習做鋪墊,目的是查詢當前專案資料夾下
'是否存在某個檔案,如果有,就先刪除它,然後再建立它,並且寫入一些內容
dim prjpath,fname,fso,objfile
set fso = createobject("scripting.filesystemobject")
prjpath=hmiruntime.activeproject.path
fname=prjpath & "\測試檔案.txt"
set objfile=fso.createtextfile(fname,true)'覆蓋檔案
objfile.writeline("朝辭白帝彩雲間")
objfile.writeline("千里江陵一日還")
objfile.writeline("兩岸猿聲啼不住")
objfile.writeline("輕舟已過萬重山")
objfile.close()
set objfile=nothing
end sub
這裡解釋一下,hmiruntime.activeproject.path獲取專案的絕對路徑,因為專案路徑不固定,專案可能移動到其他路徑,所以通過系統函式獲取。
fso.createtextfile(fname,true)建立乙個文字檔案,這裡的文字檔案就包括了txt,也可以是ini檔案等,引數true的意思是如果已經存在,就直接覆蓋,不提示。
.writeline就是寫入一行內容。這裡寫了四行內容。
.close就是關閉物件,最後讓物件=nothing釋放物件。
儲存執行,點選按鈕就能看到乙個寫了四句古詩內容的txt檔案,如果對這個檔案做修改,關閉。再次點選按鈕,開啟檔案會發現剛才的修改無效,因為修改後的檔案在.createtextfile時候被覆蓋了。
擴充套件一下,如果要判斷檔案是否存在,可以使用
fso.fileexists(fname)
如果要刪除乙個存在的檔案,而且不用提示,可以用
fso.deletefile(fname)
接下來實現讀取文字檔案內容。
新增乙個按鈕和乙個文字框,文字框的名字叫做txtbox,按鈕的滑鼠點選事件新增以下指令碼:
sub onclick(byval item)
dim fso,prjpath,fname,objfile,txtbox
set txtbox=screenitems("txtbox")
txtbox.text=""
set fso = createobject("scripting.filesystemobject")
prjpath=hmiruntime.activeproject.path
fname=prjpath & "\測試檔案.txt"
if fso.fileexists(fname) then
set objfile=fso.opentextfile(fname,1,false)
while not objfile.atendofline
txtbox.text=txtbox.text & objfile.readline
wend
end if
objfile.close()
set objfile=nothing
end sub
上面的程式中.opentextfile表示開啟乙個文字檔案,引數true表示唯讀開啟,第三個引數表示檔案不存在的話,是否建立,這裡不建立。
.atendofline表示是否到了檔案末尾,.readline表示讀一行。
其他的操作還有.skipline表示跳到下一行開始。.skip(5)表示向後移動5個字元。.read(5)表示讀5個字元.
.readall() 表示讀取所有內容,前面的練習也可以使用這個命令,只不過為了展示.atendofline才一行一行的讀取。
replace(string,find,replacewith[,start[,count[,compare]]])
string 需要被搜尋的字串
find 將被替換掉的字串部分
replacewith 用於替換的字串
start可選項,從第幾個字元開始查詢替換,預設是1
count 可選項,替換多少次,預設是-1,全部都要替換
compare 可選項,規定所使用的字串比較型別。預設是 0
compare有兩種型別:
vbbinarycompare 值為0 ,執行二進位制比較
vbtextcompare。值為1,執行文字比較。
詳見
搬家第42天 excel中match函式的練習
為了後面的學習,先做match函式的練習,假設有這樣一張表,c列是公升序排列,d列隨機排列,e列降序排列。match函式的語法是match 查閱值,查閱區域,匹配方法 用於查詢符合條件的單元格在查詢區域中所處的相對位置。重點是匹配的方法,有三種方法 為1或者省略,查詢小於或等於 查閱值 的最大值。查...
研2的第42天
最近關於前端,看了好多篇部落格,比起研一零基礎學的時候看這些部落格,感悟和理解加深了好多,雖然很多以前看過,卻忘記了。記憶裡的有已經畢業的研三師兄找工作的經歷,還有這一屆研三師兄找工作的經歷,也接觸了一些面試筆試題,覺得好難。然後偶然間在書中看到了這些知識點,咦,太基礎了。是啊,很慚愧。乙個cs的研...
搬家第25天 記錄昨天的日期
前兩天在qq群裡看到有人問如何使用citectvba取得昨天的日期,我看了一下citectvba資料,乙個壞訊息是沒有日期加減計算的函式,乙個好訊息是excel裡面豐富的日期時間函式可以計算昨天的日期,而且citect可以讀取excel檔案內容。當然可以在citectvba中通過if then一大堆...