2010-06-29 82 views
0

我将下面的示例代码德尔福:如何通过字符串索引OleVariant

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

回答

3

我已经采取了看从TLB文件生成的展望单元和它看起来像这样:

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

该行接口有一个方法项目,这需要一个OleVariant。所以使用这个:

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

也看看MSDN help

+0

谢谢The_Fox。 FTR,我没有检查Outlook源代码,但是我只有Outlook XP,直到Outlook 2007才引入GetTable。 – Xanyx 2010-06-29 08:03:36

+0

您可以自己生成这些文件(我做过)。启动Delphi,选择Project \ Import Type Library,找到Microsoft Outlook 12.0 Object Library,如果不存在,可以添加%programfiles%\ Microsoft Office \ Office12 \ msoutl.olb。选中“Generate Component Wrapper”并指定一个单元目录。现在点击“创建单位”。生成一个Office_TLB.pas和一个Outlook_TLB.pas。 – 2010-06-29 08:51:56

+0

非常好,谢谢 – Xanyx 2010-06-29 21:03:14

相关问题