メニューをスキップして本文へ


ここから本文

[Delphi] CoInitializeが呼び出されていません

  • 2005年10月18日(火) 23:39 JST
  • 投稿者:
  • 閲覧数
    5,682

Delphi で Excel の機能を使う場合に、CreateOleObject など COM の機能を使って呼び出すのだが、この際に下記のメッセージが表示されることがある。

CoInitializeが呼び出されていません

GUI アプリケーションを作っている場合には、Forms ユニットあたりで CoInitialize が呼び出されているのだろうが、CUI アプリだと100% エラーが表示される。
このため、CUI アプリケーションでこのエラーメッセージを回避するには、CoInitialize を呼び出すなどの対策が必要になる。また、CoInitialize と対で CoUninitialize を呼び出さないといけない。
実際の対策は実に簡単で、

  1. uses に ActiveX を追加
  2. COM 機能を使用しているコードの前に CoInitialize を追加
  3. COM 機能を使用し終えたところで、 CoUninitialize を追加

COM を使うとその部分は、結構長くなることが多いと思うので、クラス化して、その Create と Destroy に それぞれ CoInitialize と CoUninitialize を追加するのがオススメである。

※複数回 COM 機能を使うときにも、全体を CoInitialize と CoUninitialize で囲むように追加すれば OK !

トラックバック

このエントリのトラックバックURL:
http://www.blackcatlab.com/trackback.php/ProgramingFAQ_del0060
表示形式
コメント投稿

サイト管理者はコメントに関する責任を負いません。

サブメニュー1をスキップしてサブメニュー2へ

ログイン

ログイン

あくせすかうんたぁ

テーマ変更

広告


ここからサブメニュー2

サブメニュー2をスキップしてフッタへ


ここからフッタ