Exception EOleSysErrorについて

解決


yTake  2011-07-04 09:58:43  No: 40737  IP: 192.*.*.*

yTakeです。

作成したアプリケーションを開発機以外のPCへインストール(コピー)しで実行すると、
"Exception EOleSysError in Module Project1.exe at 00060389.クラスが登録されていません。"
と言うエラーが出て起動されません。

EOleSysErrorはOLEオブジェクト?つまり、MS Excel等をアプリから制御するのに用いられるAPI?と思われます。
然しながら、作成したアプリケーションは一切ExcelやWord等MSソフトに限らず外部アプリケーションの制御を行なっていません。
唯一、ActiveXグループからMSCommをコンポーネントとして登録使用はしています。

このActiveXグループからと言うところが、何か影響していないでしょうか?
と言うのは、作成しているアプリのソースで、uses節で、気になるExtCtrls, ComCtrls, OleCtrlsと言うものが使われています。
特に最後のOleCtrlsは怪しいです。

アプリ上、使用していないので、usesから削除しても、コンパイル時に勝ってに組み込まれてしまいます。

少なくともOleCtrlsは外すべきと思いますが、外し方が分かりません。
それとも何か別の問題でしょうか?


ご教示頂ければ幸いです。

編集 削除
KHE00221  2011-07-04 10:49:26  No: 40738  IP: 192.*.*.*

開発機以外に MSComm 登録されてる?

>アプリ上、使用していないので、usesから削除しても、コンパイル時に勝っ>てに組み込まれてしまいます。

コンポーネントが使用しているのは削除しても勝手に組み込まれる
MSComm が使用してるんじゃないのか

編集 削除
tor  2011-07-04 12:58:03  No: 40739  IP: 192.*.*.*

一般にActiveXコントロールは、コンポーネント(ocxファイル)を一緒に配布して
実行先の環境でregsvr32などを使って登録しておかないと使えません。

編集 削除
yTake  2011-07-04 15:28:42  No: 40740  IP: 192.*.*.*

KHE00221さん、torさん

ありがとうございます。

なるほど、MSCommの登録はしていないです。
ただ、エラー内容に釈然としないものがありますが、、、


結論として、MSComm32.OCXを登録していない事が原因でした。
登録する事で、正常に起動致しました。
お騒がせ致しました。


と言う事は、インストーラ上でMSComm32.ocxを一緒にコピーし登録させてしまえば、コマンドラインからわざわざ登録する手間が省けると言う事でしょうか。

ありがとうございました。

編集 削除
yTake  2011-07-05 13:24:13  No: 40741  IP: 192.*.*.*

解決したので閉めたいと思います。

ありがとうございました。

編集 削除