2

我正在做一个项目,主要目标是在 Outlook 的日历和我们的应用程序的日历之间进行同步。在我们的应用程序中,我们使用自定义编程语言,并通过 dispatchId 映射 Outlook 函数

我的问题来了。我StorageItem在 Outlook 日历中使用来保存一些内部数据,但是当我尝试调用GetStorage方法时,它有时会以异常结束。

异常消息是“Incorrect function”(从捷克语“Nesprávná funkce”翻译而来)

GetStorage在不同的文件夹(日历)中调用不同的数据存储(.pst)。当我尝试GetStorage直接从 vsto 插件调用方法时,它每次都有效。但是通过 COM 在我们的应用程序中调用它,这很痛苦。

我无法诱导确切的行为,它看起来像是随机发生的。

句法:

  oFolder := oNS.GetFolderFromID(OFolderID,''); // ok, folder found
  if oFolder <> nil then begin
    oStorageItem := oFolder.GetStorage('Synchronization.Info', 0); // exception
    if oStorageItem.Size > 0 then
      Result := False;
  end;

示例情况:

第一个数据存储:

  • 名为“firstCal”的日历
  • 名为“secondCal”的日历

第二个数据存储:

  • 名为“thirdCal”的日历

调用 getStorage:

  1. 调用 firstCal.GetStorage - 异常
  2. 调用 secondCal.GetStorage - 好的
  3. 调用thirdCal.GetStorage - 好的

..和其他随机组合

4

1 回答 1

0

由于这个线程http://www.delphigroups.info/2/11/941254.html,我终于找到了解决方案。

“Delphi 引发错误,它不是 S_OK (0),但 VB(Visual Basic) 检查它是否>0(这就是 SUCCEEDED 宏/函数所做的)。”

我们的自定义语言基于 Delphi。GetStorage 函数调用结果为 1,如果调用正常,我们期待 S_OK (0)。

于 2012-08-10T10:54:54.880 回答