如何为OleVariant传递字符串索引

时间:2010-06-29 04:09:20

标签: delphi outlook automation ole

我正在将以下示例代码转换为Delphi:

http://msdn.microsoft.com/en-us/library/bb176406%28v=office.12%29.aspx

我的代码类似于:

var
  vTable, vRow: OleVariant;
begin
....

  while vTable.EndOfTable = False do
  begin
    vRow := vTable.GetNextRow;
    sEmail := vRow['Email1Address'];
    ShowMessage(sEmail);
  end;
end;

问题是我需要传递一个字符串索引'Email1Address',但是Delphi会给出错误:不兼容的类型:整数和字符串。

我应该使用不同类型的变种吗?

TIA

1 个答案:

答案 0 :(得分:3)

我已经看过从TLB文件生成的Outlook单元,它看起来像这样:

_Row = interface(IDispatch)
    ['{000630D3-0000-0000-C000-000000000046}']
    //snip
    function Item(Index: OleVariant): OleVariant; safecall;
    //snip
  end;

Row接口有一个方法Item,它接受OleVariant。所以使用这个:

sEmail := vRow.Item('Email1Address');

另请查看MSDN help