2

私はプロジェクトに取り組んでいます。この主な目標は、Outlook のカレンダーとアプリケーションのカレンダーを同期することです。このアプリケーションでは、カスタム プログラミング言語を使用しており、dispatchId を介して Outlook 関数をマッピングしています。

そして、ここに私の問題があります。一部の内部データを保存するためにOutlookカレンダーで使用StorageItemしていますが、メソッドを呼び出そうとするとGetStorage、時々例外で終了します。

例外メッセージは「機能が正しくありません」 (チェコ語の「Nesprávná funkce」から翻訳)です。

GetStorageさまざまなフォルダー (カレンダー)、さまざまなデータ ストア (.pst) で呼び出しています。GetStoragevsto アドインから直接メソッドを呼び出そうとすると、毎回動作します。しかし、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」というカレンダー

2 番目のデータストア:

  • 「secondCal」と呼ばれるカレンダー

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 に答える