作为我们软件业务的一部分,我们为开发人员提供开发套件,以便将我们的软件集成到他们的软件中。我们通常会尝试迎合许多不同的语言/环境。
最近,我们收到了一些使用微软Dynamics NAV的潜在客户的询问。我们SDK的一种风格是COM可调用dll,可以在NAV中引用。
现在,我们API中的一个方法返回一个String数组。其中一个开发人员我们正在运行一个试点程序,报告使用该方法的问题,他找不到解决方法。我们必须给他一个解决方法,它只返回数组的第一个索引(这对于他的特定用途就足够了),但这显然不是解决方案。
不幸的是,我们手头没有Navision经验,我们也没有Navision的许可副本(试用版似乎不会让你修改代码)而我无法在任何地方找到任何信息线上。
有人知道这是否可行?如果是这样,那么正确的方法是什么?
答案 0 :(得分:2)
“Dimensions”在NAV中的Array上固定,这使得从COM接收和发送基于数组的数据变得很困难。
虽然我没有遇到同样的问题,但我有相反的结果(将一个字符串数组传递给COM),其中一个最简单的方法是使用循环和函数将字符串发送到COM / DLL一次一个,然后用标志或类似信号完成。无界数组在.NET中很有用,因为您可以根据需要不断添加字符串。我将假设DLL是基于.NET的;
所以从.NET到C / AL;
所以从C / AL到.NET;
类似于.NET到C / AL,除了.NET具有无界数组,这使得事情变得更容易。
DotNetArray.ClearArray;
REPEAT
DotNetArray.Add(Customer.Name);
UNTIL
DotNetArray.EndOfArray;
注意事项;