德尔福7 __ArrayList

问题描述:

在Delphi 7:德尔福7 __ArrayList

我如何阅读在C#中做了一个COM DLL返回一个数组列表?

我尝试这样做:

var 
    products: IList; 
begin 
    products := MyClass.Products() as IList; 
    //... 
end; 

这种模式在文档recomended,但在Delphi 7,我不能申请for或while或任何对我的产品变量。

我的意图是读取结果并将其存储在我的树视图中。

我该怎么做?

注意:IList的是从mscorlib_TLB.pas推导,显然在Delphi 7没有办法扫或算作在最近德尔福

版本
+0

'Count'属性应该从['ICollection']继承(http://msdn.microsoft.com/zh-cn/library/system.collections.icollection%28v=vs.110%29.aspx )接口,所以我认为'(Products为ICollection).Count'应该给你元素数。其余的可能是索引['Item'](http://msdn.microsoft.com/en-us/library/system.collections.ilist.item%28v=vs.110%29.aspx)属性。我的意思是[像这样]](http://pastebin.com/VFp3ndz9)。 – TLama 2014-08-28 17:06:46

+2

为什么不让这个答案TLama?然后不需要pastebin – 2014-08-28 17:14:55

随着你叫GetEnumeratorIList发生,从IEnumerable继承接口,获取一个IEnumerator接口并对其进行迭代。在伪代码:

enumerator := products.GetEnumerator; 
while enumerator.MoveNext do 
    DoStuff(enumerator.Current); 

我想你需要投Current在您的代码更有用的东西。如@TLama所述,您还可能需要将IList转换为IEnumerable

+1

如果您导入mscorlib类型库,您会看到'IList'从'IDispatch'继承。这就是为什么我建议'如同演员一样。 – TLama 2014-08-29 04:23:20

+0

好吧,它是伪代码。我想如果你需要更多的帮助,你需要准确解释你的代码是什么样的,什么“不起作用”的意思。 – 2014-09-01 12:01:31

+0

谢谢@DavidHeffernan先生。我知道这是一个伪代码。我正在阅读文档并试图遵循你的推理。 – ECC 2014-09-01 12:05:00