Как передать строковые индексы для OleVariant - PullRequest
0 голосов
/ 29 июня 2010

Я конвертирую следующий пример кода в 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 выдает ошибку: Несовместимые типы: Integer и string.

Должен ли я использовать другой тип варианта?

ТИА

1 Ответ

3 голосов
/ 29 июня 2010

Я посмотрел на модуль Outlook, сгенерированный из файла TLB, и он выглядит так:

_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 .

...