【问题标题】:DWScript: how do I get Result after CallDWScript:如何在调用后获得结果
【发布时间】:2013-01-09 14:45:16
【问题描述】:

好的,我对 DWScript 完全陌生。现在我对它的能力很着迷,但是尽管我阅读了随附的 wiki 中的所有页面以及此处的问题/答案,但在从 Delphi 调用函数后,我仍然找不到提取结果的方法,如下所示:

  func := m_dwsExec.info.Func[funcname];
  func.call(params);

然后我就卡住了:exec.result.toString 什么也没给我。只要我看到我在 exec 对象中没有Result,这就是为什么从脚本堆栈中清除项目时结果被删除并丢失的原因。请告诉我完成这个简单任务的正确方法是什么?

【问题讨论】:

  • 欢迎来到 Stack Overflow。很高兴您找到了问题的答案,但请将答案写在下面的 answer 部分。
  • 我明白了,这是有道理的。谢谢。

标签: delphi dwscript


【解决方案1】:

编辑:

正如 Eric Grange 在下面的 cmets 中所说,最佳实践是这样的:

  func := m_dwsExec.info.Func[funcname];
  info := func.call(params);
  funcresult := info.ValueAsString; //or Value, ValueAsInteger, etc.

原答案:

我找到了答案——缺失的结果位于返回的IInfo 对象的data 属性中:

  func := m_dwsExec.info.Func[funcname];
  info := func.call(params);
  funcresult := info.data[0]

【讨论】:

  • 您可能已经看到,真正的文档存在于 Eric 在 Test 文件夹中创建的数百个单元测试用例中。一开始可能会让人望而生畏,但每个案例都非常简单,并且通常会为您指明方向。
  • 对于简单类型,您有 Value 和 ValueAsXxx 方法。 Data[] 数组适用于更复杂的情况或当您想要直接访问变体时。
  • 顺便说一句,它也记录在 code.google.com/p/dwscript/wiki/FirstSteps 的“功能”段落中
  • @EricGrange 是的,确实存在 - 我的错误
猜你喜欢
  • 1970-01-01
  • 2020-07-07
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
相关资源
最近更新 更多