【问题标题】:Looking at a attribute object and seeing if it has duplicates查看属性对象并查看它是否有重复项
【发布时间】:2022-08-18 09:56:49
【问题描述】:

下面的代码用于检查外链是否已验证单词。更重要的是,它检查每个外链是否验证了代码,并且仅在所有链接都匹配时才返回验证。

if (value = \"verified\") display \"verified\" else value has \"blank\" display \"blank\"。


string HVCRM_Status = \"\"
Link outlnk
string tmn = \"\"
bool Blank_Verified_Found = false
string Verification_Point = obj.\"Verification Point\"

if (Verification_Point == \"Yes\")
{
    for outlnk in obj->\"*\" do
    {
        tmn = fullName target(outlnk)
        Object tgt = target(outlnk)
        if(matches(\"VCRM\", tmn))
        {
            HVCRM_Status = probeAttr_(tgt,\"Verification Status\")
            //display \"HVCRM_Status: \" HVCRM_Status
            if (HVCRM_Status != \"Verified\")
            {
                Blank_Verified_Found = true
            }
        }
    }
    if (Blank_Verified_Found != true)
        //display \"Status: Verified\"
            display \"Verified\"
    else
        //display \"Status: Not Verified\"
            display \"Not Verified\"
}  

    标签: ibm-doors


    【解决方案1】:

    从 sn-p 我不明白你到底想在这里做什么。

    也许这有帮助:

    • 对象具有属性。
    • 为每个模块定义属性并具有数据类型。
    • 只有存在的属性才能在 DXL 中使用。
    • 另外:相等比较是使用==,而不是=
    • = 用于为变量或属性赋值

    假设您定义了名称为"myattr"string 类型的“myOtherAttribute”的属性。

    • 获得一个属性引用对于前者,您声明o."myattr"
    • 要获取该属性(string 类型)的内容,您可以将属性引用与空字符串 ("") 连接起来,或者您可以通过将属性引用分配给类型为的变量来引发隐式类型转换string
    • 一个值,将值赋予属性引用与“=

    所以,要么

       if (o."myattr" "" == "Test") {
          o."myOtherAttribute" = "Good Morning"
       }
    

    或者

       string myAttrContent = o."myattr"
       if (myAttrContent == "Test")´ {…]
    

    您的代码使用属性“Attribute”、“z”、“TEST”和一些没有名称的属性 (o."")(当然不存在)。

    使用此信息,重新编写脚本并查看您是否还有其他问题

    【讨论】:

    • 嗨迈克,感谢您的详细回答。我已经用我的 DOORS 模块对此进行了测试,对于上面的示例并使用模块中的数据,这确实有效。最初我想使用链接转到某个模块从该模块获取对象和属性。主对象有多个链接。我已经改写了我原来的问题。
    • 您似乎对以下一级链接级别的对象的“验证状态”属性的内容感兴趣。分析向导生成的代码有声明s = probeRichAttr_ …。在这一行之后,s 包含一个链接对象的“验证状态”的内容。我会在showOut 的顶部创建一个布尔变量bool bVerified=false。设置s后,检查是否“已验证”,如果是,将bVerified设置为true。删除循环中间的displays。仅当 bVerifiedtrue 时,showOut 的末尾才显示“已验证”
    • 嗨迈克,谢谢我试过这个。如果属性包含已验证,我目前遇到的问题是确认“s”是否返回已验证。我尝试使用带有 *s 'if (s == "verified") 的通配符。这是因为可以在 DXL 属性中填充多个已验证。现在最终结果是当“bVerified = true”时所有单元格都显示已验证,而当“bVerified = false”时所有单元格都返回空白。
    • 如果您发布的代码是完整的,那么您将不再调用“showOut”,并且永远不会填充 bVerified。也许我的意图不清楚。我了解您的 DXL 属性应包含“已验证”一词,当且仅当直接外联对象的“验证状态”中至少有一个具有“已验证”值,并且它们都不是“已验证”,则 DXL 属性应为空白。正确的?
    • 在这种情况下,我不明白关于通配符的句子。您在寻找烫发bool findPlainText(string s, string sub, int &offset, int &length, bool matchCase[, bool reverse]) 吗?您可以使用此 perm 检查 s 是否在文本中的某处包含“已验证”一词。 (参见此处的示例stackoverflow.com/questions/72553436/…
    猜你喜欢
    • 2013-12-26
    • 2019-06-16
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多