【问题标题】:find Variables in a module在模块中查找变量
【发布时间】:2018-02-02 05:29:46
【问题描述】:

我是 DXL 新手,我想提取包含

的变量
_I_,_O_ and _IO_

从一个模块导出然后到csv 文件。请帮我解决这个问题

例如: ADCD_WE_I_DFGJDGFJ_12_QWE and CVFDFH_AWEQ_I_EHH[X] 设置为某个值

【问题讨论】:

  • 嗨,欢迎来到堆栈溢出。请参阅How to Ask 链接以获取有关如何提出问题并相应更新您的问题的更多详细信息。

标签: ibm-doors


【解决方案1】:

这个问题有两个部分。

  1. 您想查找名称中包含这些部分的变量

  2. 您要导出为 .csv 文件

另一个人可能能够以更好的方式进行扩展,但对于 1.,目前唯一想到的方法是:

遍历模块中的属性(for ad in m do {})并获取属性名称的字符串。

我假设您的属性值是 _I_、_O_ 或 _OI_?像 alpha = "_I_"?这些是枚举值吗? 如果是,那么您只需要检查每个对象的属性值。如果其中一个是属性值,则将其添加到诸如跳过列表之类的内容中。在这里有一个计数器会很有用,可能每个属性都有一个,例如 countI、countO、countOI,然后您可以将计数器用作跳过列表的 put() 函数的键。

找到所有属性后,您就可以继续写入 csv

Stream out = write("filepathname/filename.csv") // to declare the stream
    out << "_I_, _O_, _OI_\n"

然后你可以同时遍历你的跳过列表

int ijk = 0; bool finito = false
while(!finito) do {
  if(ijk<countI) {
    at = get(skipListI, ijk)
    out << at.name ","
  }
  else out << ","
  if(ijk<countO) {
    at = get(skipListO, ijk)
    out << at.name ","
  }
  else out << ","
  if(ijk<countOI) {
    at = get(skipListOI, ijk)
    out << at.name "\n"
  }
  else out << "\n"

  ijk++
  // check if the next iteration would be outside of bounds on all lists
  if(ijk >= countI && ijk >= countO && ijk >= countIO) finito = true
}

或者代替 at.name,您可以打印出您想要的属性的任何部分。名称、值、“名称:值”或其他任何内容。

我还没有运行这个,所以你需要做任何故障排除。

--

我希望这个想法能让你开始,先在纸上写下你想要的东西,然后按照这个计划去做。我在这里提到的有用的关键内容是跳过列表和流写入(或追加,如果您想继续添加)。

以后,请考虑让您的问题更清楚。您是在属性名称中还是在属性值中寻找那些搜索词。您是要打印出名称或值,还是什么?您将使用哪种格式的 .csv?任何信息都将有助于回答您的问题。

【讨论】:

  • 感谢您的帮助
  • 没问题。如果您遇到困难,请再次评论。如果您认为这足以回答您的问题,请选择它作为接受的答案,以便它可以帮助处于相同情况的其他人。 :) 祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多