2017-05-08 15 views
0

私はDelphiでスレッド内のXMLファイルをロードしようとしているが、私はこのエラーメッセージになっています内の負荷xmlファイル:デルファイ:スレッド

マイクロソフトMSXMLがインストールされていないが

しかし、私のコードはスレッド外で正常に動作します!ここで

は私のコードです:

procedure NewThread.Execute; 
begin 
    XMLDocument1 := TXMLDocument.Create(Application); 
    XMLDocument1.Active := True; 
    XMLDocument1.LoadFromXML('document.xml'); 
end; 

任意のアイデア?

+1

でそれをラップしてみてくださいCoInitializeとスレッドのコンテキスト内でCoUninitialize – Jason

+0

私はCoInitialize(nil)を試しました。 XMLDocument1:= TXMLDocument.Create(アプリケーション); XMLDocument1.Active:= True; XMLDocument1.LoadFromXML( 'document.xml'); CoUninitialize;私は同じエラーを受けています – user2224150

+0

あなたの助けを借りて大丈夫です – user2224150

答えて

0

MSXMLはCOMオブジェクトを使用します。エラーメッセージは、MSXML COMオブジェクトがインスタンス化に失敗したことを意味します。

最初のステップは、MSXMLが実際にマシンにインストールされている場合、常にチェックすることです、そしてあなたがCOMオブジェクトにアクセスするすべてのスレッドコンテキストでCoInitialize/CoUninitializeを呼び出す必要があり、そしておそらく呼び出してみのtry/finally文

+0

MSXMLがインストールされているかどうかを確認する方法? – user2224150

+0

MSXML.dllファイルがWindowsディレクトリに存在するかどうかを確認することができます – Fero

+0

OK、ありがとうございました – user2224150