FAQ

FAMOS

シーケンス / 関数top

シーケンス / 関数

ID.

Q. 複数の条件に合う名前の変数を抜き出したい。

A.


VarGetInit2()関数では複数の条件を指定することは出来ないため、複数の条件を1つずつ判定するシーケンスを作成して下さい。
または、この用途にはTxRegexMatch()関数が便利です。TxRegexMatch()関数は、Microsoft .NET Frameworkに実装されている正規表現用パッケージを使用します。正規表現の詳細については、Microsoft .NET Frameworkのドキュメントを参照して下さい。
TxRegexMatch()関数はimc FAMOS Ver 7.2以降が必要です。


例)
; 変数名のサンプル
float_GPS_Latitude = 35.681226
float_GPS_Longitude = 139.766839
Speed = 30
StressTestPoint1 = 10
StressTestPoint2 = 20
StressTestPoint3 = 30
Gear = 3
RPM = 2000

; 変数リストに登録されている変数名をテキスト配列に格納
_nnn = VarGetInit2("Tx*", 1) ; テキスト配列(Tx,Tx1,...)は除外
Tx = TxArrayCreate(0)
for _iii = 1 to _nnn step 1
    Tx = TxArrayInsert(Tx, VarGetName?(_iii), -1)
end

; 変数名に GPS または test を含む変数名
Tx1 = TxRegexMatch(Tx, ".*(GPS|test).*", "", 1)
; 空行を削除
for _iii = TxArrayGetSize(Tx1) to 1 step -1
    if 0 = TLeng(Tx1[_iii])
        Tx1 = TxArrayDelete(Tx1, _iii)
    end
end

; 変数名に GPS または test を含まない変数名
Tx2 = TxRegexMatch(Tx, ".*^(?!.*(GPS|test)).*", "", 1)
; 空行を削除
for _iii = TxArrayGetSize(Tx2) to 1 step -1
    if 0 = TLeng(Tx2[_iii])
        Tx2 = TxArrayDelete(Tx2, _iii)
    end
end

; 変数名に GPS と Latitude を2つとも含む変数名
Tx3 = TxRegexMatch(Tx1, "(?=.*GPS)(?=.*Latitude).*", "", 1)
; 空行を削除
for _iii = TxArrayGetSize(Tx3) to 1 step -1
    if 0 = TLeng(Tx3[_iii])
        Tx3 = TxArrayDelete(Tx3, _iii)
    end
end

; 変数名に GPS と Latitude を2つとも含まない変数名
Tx4 = TxRegexMatch(Tx, "^(?!.*(?=.*GPS)(?=.*Latitude)).*", "", 1)
; 空行を削除
for _iii = TxArrayGetSize(Tx4) to 1 step -1
    if 0 = TLeng(Tx4[_iii])
        Tx4 = TxArrayDelete(Tx4, _iii)
    end
end

; 変数名に GPS を含み Latitude を含まない変数名
Tx5 = TxRegexMatch(Tx, "^(?=.*GPS)(?!.*Latitude).*", "", 1)
; 空行を削除
for _iii = TxArrayGetSize(Tx5) to 1 step -1
    if 0 = TLeng(Tx5[_iii])
        Tx5 = TxArrayDelete(Tx5, _iii)
    end
end

del _*

 


製品詳細はこちら

<< シーケンス / 関数に関するFAQ一覧へ戻る