Delphi中的二维Safearray?

3

我需要对一个COM方法进行单元测试,因此需要创建一个字符串类型的二维安全数组。

如何实现?

1个回答

5
创建一个二维数组,格式如下:
var
  arr: Variant;
....
arr := VarArrayCreate([1, 10, 1, 5], varInteger);

这将创建一个数组,其主维度的范围为1..10,次要维度的范围为1..5:

      1      2      3      4      5 
  ┌──────┬──────┬──────┬──────┬──────┐
 1[1,1][1,2][1,3]| [1,4]| [1,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 2[2,1][2,2][2,3]| [2,4]| [2,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 3[3,1][3,2][3,3]| [3,4]| [3,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 4[4,1][4,2][4,3]| [4,4]| [4,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 5[5,1][5,2][5,3]| [5,4]| [5,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 6[6,1][6,2][6,3]| [6,4]| [6,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 7[7,1][7,2][7,3]| [7,4]| [7,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 8[8,1][8,2][8,3]| [8,4]| [8,5]│
  ├──────┼──────┼──────┼──────┼──────┤
 9[9,1][9,2][9,3]| [9,4]| [9,5]│
  ├──────┼──────┼──────┼──────┼──────┤
10[10,1][10,2][10,3]|[10,4]|[10,5]│
  └──────┴──────┴──────┴──────┴──────┘

当你提到想要创建一个包含字符串的数组时,我认为你指的是COM BSTR。此时,在调用VarArrayCreate时,请将varOleStr作为变量类型参数传递。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接