Delphi で Excel の機能を使う場合に、CreateOleObject など COM の機能を使って呼び出すのだが、この際に下記のメッセージが表示されることがある。
CoInitializeが呼び出されていません
GUI アプリケーションを作っている場合には、Forms ユニットあたりで CoInitialize が呼び出されているのだろうが、CUI アプリだと100% エラーが表示される。
このため、CUI アプリケーションでこのエラーメッセージを回避するには、CoInitialize を呼び出すなどの対策が必要になる。また、CoInitialize と対で CoUninitialize を呼び出さないといけない。
実際の対策は実に簡単で、
COM を使うとその部分は、結構長くなることが多いと思うので、クラス化して、その Create と Destroy に それぞれ CoInitialize と CoUninitialize を追加するのがオススメである。
※複数回 COM 機能を使うときにも、全体を CoInitialize と CoUninitialize で囲むように追加すれば OK !
コメント (0件)