0

何らかの理由で、DXL インタープリターは、for ループの最後で i をデクリメントしているという事実を考慮していません。「i」の値を変更して、arrObj[] 配列をナビゲートしようとしています。それぞれ値をインクリメント(次のオブジェクトの場合)およびデクリメント(前のオブジェクトの場合)するボタンがいくつかあります。while ループで同じことを行うと、アプリケーションがクラッシュします。

インデックスを制御する方法はありますか、または DXL は常に以前の値を記憶して増分します (ユーザーがコード内で値を変更した場合でも)。

ここに私のコードからのスニペットがあります:

for i in 0:(iTotalObj-1) do
{   
    sAuxType    = arrObj[i]."ObjectType"
    sAuxNr      = number(arrObj[i]) " "
    sAuxObjTxt  = arrObj[i]."Object Text"

    print "\nAfter FOR:"i ""

    if sAuxType == "Test-Case" then
    {
        set(testContent,"Index number: (" number(arrObj[i])   ") -> " arrObj[i]."Object Heading" "")
        set(expectedResults, " ")
        fillRow(sTesterName,sCfgSW,sCfgHW,arrObj[i])
        block(dtbox)
    }
    if sAuxType == "Test-Step" then
    {
        set(testContent,"Index number: (" number(arrObj[i])   ") -> " arrObj[i]."Object Text" "")
        set(expectedResults,richTextWithOle(arrObj[i]."ExpectedResult"))
        fillRow(sTesterName,sCfgSW,sCfgHW,arrObj[i])
        block(dtbox)
    }
    if sAuxType == "Test-Case-Description" then
    {
        set(testContent,"Index number: (" number(arrObj[i])   ") -> " arrObj[i]."Object Text" "")
        set(expectedResults, "Please check the description throroughly")
        fillRow(sTesterName,sCfgSW,sCfgHW,arrObj[i])
        block(dtbox)

        arrObj[i].("TestResult " iTR "") = "n/a"
        arrObj[i].("FR " iTR "") = "n/a"
    }
    i--
    print "\nAfter DECREMENT:"i ""
}

出力ボックスに次のように表示されます。

After FOR:0
After DECREMENT:-1
After FOR:1
After DECREMENT:0
After FOR:2
After DECREMENT:1
4

1 に答える 1

0

このタイプの for ループでは、DOORS がiセット内の次の値を強制していると思います。代わりに、このタイプのループを使用できるはずです。

for(i=0; i<(iTotalObj-1); i++) {
  ...
}

このループを使用するとi、ループ内で操作できます。

于 2015-03-17T13:20:10.897 に答える