match pattern 的BUG??

 

用match pattern功能,有發現一個有趣現象。

當文字輸入5C38(HEX display 資料格式),會發現mattch pattern會找不到;但用5A38就可找到。如下圖。

 

 

但5C38用search and split就可以找到。如下圖。

  

 

相同現象還有5C31~5C39、005B~805B、FF5B...還有很多類似的狀況。

如果改用'\'code display不用HEX display 資料格式,就會發現不能被找到的字串似乎在起頭都有"\"字元。

 

這是BUG嗎?我的是LV7.0。 玩LabVIEW經驗豐富的人,可以解答嗎?還是後續的8.X版已經改善了?

您貼的圖無法顯示,可以請您再貼一次嗎?

我卻可以看到圖面,當初的圖是直接COPY,貼上的。

現在我要文件上傳、圖面上傳,都發現不能用(找不到伺服器),是我的問題嗎?

 

我只能用文字敘述了。

選到String這個function裡面的match pattern這個vi,將輸入數值及搜尋的字串通通設成5C38的ASCII 的hex display,執行後會發現offset past match 會輸出-1,代表沒找到符合字串。

但輸入5A38就卻可以找到,但5C38如果改用search and split這個vi卻是可以被找到。相同的數字還有5C31~5C39、005B~805B、FF5B...

我的疑問是為什麼match pattern會有這個BUG,而且我發現不能被找到的字串用\'code display 格式觀察似乎在起頭都有"\"字元。

如FF5B (hex display)在\'code display 是\FF[

5C38 在\'code display 是\ \8

005B 在\'code display 是\00[

 

假設你的hex 5A38 因為在一個文字位元為2 BIT 但是 HEX英文1 BIT

或許你的中英文混合時沒有分開造成搜尋時的時候變成5A38 41的狀況或是你的有ASCII 碼的轉換字元未看清除造成重複搜尋,載-1的地方再次尋找之位元位址沒有重複性,需要用偵察位元組並對NUICODE或ASCII碼作相對的搜尋轉換

不會有神犬所提的問題,因為我把輸入與搜尋的字串設成同一個來源,也就是說一個字串拉2條線分別到match pattern的輸入與搜尋,也是有上述問題。

版大熱心的說幫我貼圖(感動ㄋㄟ),請您等等再幫我確認,感恩。

不然底下我有貼圖麻煩各位先進看看

1.

http://img159.imageshack.us/img159/5415/snap1jj0.jpg

2.

<?:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />http://img357.imageshack.us/img357/623/snap2mn2.jpg

<?:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

我請mis的人幫我處理好了,原因出在JAVA 的設定問題,終於可以傳了

下面是範例,可以清楚看出問題點,各位好手請解惑了

test.vi

我的建議是你可以將Hex string轉成Normal String再作對,以下提供給你參考

HexStr2NormStr.vi

關於ancle的方法我懂,但我想了解的是為什麼match pattern會有這個bug?

為讓各位更明白,我用ancle例子做說明,當HexString為5C38時(這個數字請參考上面第3封的發表),match pattern 找不到;但一旦經ancle的程式轉碼後就可以被找到了.但用search/split string這個vi則無此問題?所以說這是match pattern的bug嗎?有8.0以後的人或許可以try是否一樣?

發表這個問題主要是要讓同好避開這問題 ,因為我找這問題也是花了好久才找出規則的,過幾天我會將問題改成已解決

找hex string的thread時, 找到這裡就勾起了回憶.

記得以前也有遇到match pattern在找特殊的hex word會找不到的情況, debug了幾天, 也是用search and split來解決.
看到 cloud 樓主是使用LV7.0, 而當時我使用的是LV7.1, 現在就在想是不是LV7的bug.
ancle使用的是LV8.6, 而樓主提到"經ancle的程式轉碼後就可以被找到", 我想NI在LV8已經解決這個bug. 而樓主也有升級LV的理由了.
如果在LV7.0之中, 修改ancle程式轉碼後的vi檔, 例如:拉動indicator的位置, 再存檔. 我想這個bug可能會回來吧!

[QUOTE=oseB805]找hex string的thread時, 找到這裡就勾起了回憶.

記得以前也有遇到match pattern在找特殊的hex word會找不到的情況, debug了幾天, 也是用search and split來解決.
看到 cloud 樓主是使用LV7.0, 而當時我使用的是LV7.1, 現在就在想是不是LV7的bug.
ancle使用的是LV8.6, 而樓主提到"經ancle的程式轉碼後就可以被找到", 我想NI在LV8已經解決這個bug. 而樓主也有升級LV的理由了.
如果在LV7.0之中, 修改ancle程式轉碼後的vi檔, 例如:拉動indicator的位置, 再存檔. 我想這個bug可能會回來吧!

[/QUOTE]

雖然我現在是使用LabVIEW 8.6以後的版本,但是之前我所上傳的程式版本是7.1的,如果是針對原作者的問題,原始問題並沒有解決,只是換了另外一種方法來解決該問題,有點繞口XD

我想是我會錯意了.

本來是以為 ancle 是以LV8.6轉存檔為LV7.0
不過是我會錯意了, :stuck_out_tongue:
記憶中, LabVIEW好像沒有向下相容的存檔功能, 所以LV8.6就不能轉存檔為LV7.0.

[QUOTE=oseB805]我想是我會錯意了.

本來是以為 ancle 是以LV8.6轉存檔為LV7.0
不過是我會錯意了, :P
記憶中, LabVIEW好像沒有向下相容的存檔功能, 所以LV8.6就不能轉存檔為LV7.0.

[/QUOTE]

可以的,可是要轉存二次,要先從8.6轉到8.0,再從8.0轉到7.0,方法為使用File>>Save for Previous Version

關於match pattern的使用有許多要注意的地方,特別是regular expression(b*)的運用,小弟也有提出文章如下.舉例說明string(abbc)如為"/1/2/3/4/5/6/7/8/9/0/a/b/c/d/e/f/g/h/i/j/k/l/n/m/o/p/q/r/s/t/u/v/w/x/y/z",如要找"/0","/1","/2","/3","/4"..,"/8","/9","/b","/f","/n","/t"等,regular expression必須要再多加"/".

http://it360.tw/forum/forum_posts.asp?fid=23&tid=12590

DonWang40454.8575347222

剛才仔細看了一下以下原作者的舉例,確認都是空白或special char.這樣只要加上help裡說明的範例即可

例如