搬家第42天 wincc7 3建立文字檔案寫入內容

2022-06-26 20:09:14 字數 2590 閱讀 4937

忽然發現這一篇是去年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一大堆...