DEAR 大大:
日前已經藉由其他大大的幫助清楚了解字串間和檔案的溝通方式......而目前大概還有些許問題待解決,期望大大協助....目前我大概有想到用Match pattern的方式做,但是似乎還行不通....
需求:開啟兩個檔案,並在兩個檔案中找到相同的座標位置,如抓取出1.TXT中變數A的值和2.TXT中變數B的值,進而經過計算後的值C存成3.TXT檔案
說明:由於兩個檔案中的座標位置並非全部雷同,目的是要抓取兩個檔案中有相同座標的變數值加以運算,若兩個檔案中只有一個座標有值,或是只有一個檔案有這樣的座標都不予計算
例:1.TXT
-------------------------
[100,100]
A=20
[100,101]
A=30
[110,120]
A=40
---------------------------
例:2.TXT
-------------------------
[100,100]
B=10
[100,101]
NA
[110,120]
B=40
---------------------------
經處理及計算過後存成3.TXT
[100,100]
C=20*10=200
[100,101]
[110,120]
A=40*40=160
應該是可以的,你用yao大哥提供的範例修改一下,應該就可以達到你的目的!!!
===================================================
yao大哥的string match有用到像是/r/n/s/t等參數來判斷txt檔中的換行,space,tab,等字元的功能,應該是可以達到你的需求的!!
麟仔38310.6345601852
DEAR 大大:
關於YAO大大提供的例子而言,對單一檔案而言是沒問題的!!!!
但是現在令我比較頭痛的是要開啟兩個檔案,從兩個檔案中尋找到相同的標題,進而截取標題中的內容而做運算另存新檔............
這就請有經驗的大大提供一下方向囉....
===============
Writing by Jacky Lee
LabVIEW 6.1
DAQ MAX PCI-6036E
Windows XP SP1
===============
JackyLee:
如果你清楚了那個範例, 我想你應該可以完成兩個檔案的比對
開一個檔,兩個檔....多個檔沒有不同
搜尋的目標也只是從原本設定的座標,變成是檔案內的某一個座標而已
我想你要多試著try一下, 這樣才會進步
從你的文字中沒有看到嘗試的蹤跡
你將你試做的程式拿出來與大家討論
這樣的討論才是比較有意義的
DEAR 大大:
下列內容是我參照YAO大大所增加的內容,由於我需要找尋兩個檔案中擁有相同座標中的變數值,所以現在我先在開啟第一個檔案之後,尋找到一個座標後,我直接再開啟第二個檔案,並尋找到相同座標內的值,再做存檔。
但是現在我怎麼寫,就是第2個檔案開啟之後,因為我無法固定只找尋和第1檔案同一座標的值,導致永遠都只會捉第1筆的變數值。。。。是否哪位大大有經驗幫我確認一下囉....
2004-11-23_171245_ReadTXTFile_Folder_6.1.rar
![](upload://v3FNwToY5g1N6XI2a2P2qoFKBLu.png)
===============
Writing by Jacky Lee
LabVIEW 6.1
DAQ MAX PCI-6036E
Windows XP SP1
===============
我覺得你已經寫出來啦, 我不太清楚你所表達的意思
我只幫你加了這個部份, 已經可以算出a*b了
![](upload://fbYArJZx1fkVTfMYsB8Bi6ZNblU.png)
![](upload://yi5Lsr501njaWwOQBb5f9r4mQ8y.png)
yao38315.9899652778
Hello YAO大大:
由於我目前LABVIEW只有6.1版本,是否請你幫我將7.1轉成6.1可以相容的檔案,不然我現在都不能開檔阿!!!
我無法轉成6.1版, 所以我已經有貼圖了 , 你把那兩塊加一下就可以了
Hi YAO大:
不好意思再麻煩您,那可否幫我轉成7.0版本的。因為我還不是很清楚他的前後關係,想看看本來的Code。
再者,我本來的Example還是有點問題,因為他取第2個檔案的變數時,永遠都只取到第一個變數值,這各問題似乎還沒被解決的樣子。(...還是你修改的例子已經改掉這個Bug了)@_@
抱歉, 上次看太快了, 之前的的確只能抓到b=111這個值
你的程式之所以只會抓到第一個值是因為你進入搜尋2.txt的迴圈部份
第一個Match Pattern跟本沒有Match到1.txt的座標
雖然你的想法沒有錯, 是把1.txt的座標當作2.txt的pattern
但是因為你座標的格式是由中刮號組成,Match Pattern的中括號pattern有限制
要判定[ ,一定要寫成 [[], 所以你直接把[1,1], [1,2]丟進去搜尋跟本就搜尋不到
導致每次都把2.txt的整個內容拿來搜尋 b=[0-9]+, 才會每次都抓到第一組數字
因此我增加了A部份, 就是把[1,1]改成 [[]1,1], 再丟進去搜尋, 這樣就沒問題了
文字有點表達不太清楚, 你先試著增加這部份看看吧
(ps. 我還是無法存成7.0, 大概是我直接修改你的程式, 而你的程式是用6.1寫的吧 )
![](upload://6uNxuJ3fi9jqcODcYL60aqfUvlZ.png)
![](upload://nxWH3vX3Ob3XIrgC3CK4vbIu5n2.png)
2004-11-24_235206_code.zip <--- 圖檔
yao38315.9946527778
DEAR 大大:
真是百般感動,看到你的回覆時間11點多真是水啦!!!!
目前我已經根據大大傳授的武功祕技修改到可以用在我的範例囉....感謝妳!!!!
再跟你請教依下,若我要搜尋的字串中有包含空格的話,似乎會搜尋不到的樣子....例:ABC = 123,我如果直接搜尋ABC = 的話似乎會Match不到的樣子???是否你有較好的建議捏....>_<
如果仍是使用Match Pattern的元件, 請參考Match Pattern的Help, 裡面有詳盡的說明 , 我不可能一直回答你所有的問題吧
就現在有空白的這個例子
你用這個pattern去搜尋即可 a\s*=\s*[0-9]+
建議之前的pattern也改成這個, 這樣就不會有空白的問題了
yao38316.5061111111