# Native Code > برنامه نویسی در Delphi > توسعه نرم افزار تحت وب >  در یافت ارور Microsoft MSXML is not installed

## hp1361

با سلام

من یه پروژه ساده درست کردم که به یک وب سرویس وصل بشه و اطلاعاتی رو بگیره.

وقتی بر روی دکمه واقع بر روی فرم بروزر در زمان اجرا کلیک میکنم تا نتیجه رو نشون بده پیغام خطای زیر نمایش داده میشه




> Microsoft MSXML is not installed


مشکل از کجاست؟

ممنون

----------


## gholami146

این دو سایت رو بررسی کنید احتمالا به جواب می رسید (مخصوصا اولین سایت) که میگه Add a call to CoInitialize(nil) in the app's initialization.  Both versions then work fine.


http://qc.embarcadero.com/wc/qcmain.aspx?d=108838
https://forums.embarcadero.com/threa...threadID=78702

----------


## hp1361

سلام

این تاپیک ها رو قبلا خونده بودم اما نمیدونم این CoInitialize(nil) زو کجا باید بنویسم؟!

الان منزل هستم و به وب سرویس دسترسی ندارم. آیا

set the property ComInitialization in the ServerController

همین کار رو انجام نمیده؟

----------


## gholami146

شما باید قبل از فرا خوانی دستورات این تابع رو فراخوانی کنید این دستور چیزی شبیه به کرییت هست

----------


## FastCode

حالا اصلا MSXML رو نصب کردید یا نه؟
از ورژن ۶ شروع کنید و برید بالا تا کار کنه.نمیدونم الان ورژن چندش اومده.فکر میکنم آخریش ۸ باشه.

----------


## hp1361

سلام.

فقط نسخه آخرشو دانلود کردم و تست کردم که نشد.

حالا فرا دستوری که دوستمون گفتن تست میکنم نتیجشو اینجا مینویسم

----------


## hp1361

سلام.

پروپرتی که در بالا بهش اشاره کردم "ComInitialization " رو به "ciNormal" تنظیم کردم و به درستی کار کرد!

البته دستور "CoInitialize(nil)" رو هم تست کردم اما نمی شناخت و نمی دونستم کدوم یونیت رو باید اضافه کنم پس بی خیالش شدم.

ممنون از پاسخ دوستان

----------


## homatorabi

سلام
دوست عزیز منم هم به همین مشکل برخورد کردم در نوشتن سرویس و ارتباط با وب سرویس
ولی
ComInitialization هر چی گشتم متوجه نشدم شما این Property رو در کجا set کردید و نتیجه گرفتید ؟
ممنون میشم بگی از کجا set کنم

----------


## hp1361

> سلام
> دوست عزیز منم هم به همین مشکل برخورد کردم در نوشتن سرویس و ارتباط با وب سرویس
> ولی
> ComInitialization هر چی گشتم متوجه نشدم شما این Property رو در کجا set کردید و نتیجه گرفتید ؟
> ممنون میشم بگی از کجا set کنم


سلام

من توی اون پروژه(که یک پروژه ساده بود) از اینتراوب استفاده کرده بودم

----------


## Mahmood_M

برای برخی عملیات مثل ارتباط با بانک اطلاعاتی توسط ADO یا پردازش فایلهای XML با MSXML ، برنامه از رابط COM ویندوز استفاده می کنه
هر Thread به صورت جداگانه باید رابط COM رو فراخوانی کنه، در یک برنامه تحت ویندوز، برای Thread اصلی برنامه به صورت پیشفرض یک بار رابط COM فراخوانی میشه اما اگر درون برنامه Thread دیگه ای بسازید و در اون نیاز به استفاده از رابط COM داشته باشید، در شروع کار اون Thread باید تابع CoInitialize رو فراخوانی کنید تا رابط COM فراخوانی بشه
برای پروژه تحت وب مثل Intraweb به صورت پیشفرض رابط COM فراخوانی نمیشه ، با تنظیم ComInitialization برای سرور میتونید تنظیم کنید که رابط COM برای Thread اصلی یا سایر Thread های برنامه فراخوانی بشه اما در صورتی که خودتون Thread حدیدی بسازید باز باید دستور CoInitialize رو فراخوانی کنید و در پایان کار هم با دستور CoUnInitialize اون رو آزاد کنید

Uses
 ComObj;

 ...

 CoInitialize(nil);
 try
  ...
 finally
  CoUnInitialize;
 end;

----------


## moj127

> سلام.
> 
> پروپرتی که در بالا بهش اشاره کردم "ComInitialization " رو به "ciNormal" تنظیم کردم و به درستی کار کرد!
> 
> البته دستور "CoInitialize(nil)" رو هم تست کردم اما نمی شناخت و نمی دونستم کدوم یونیت رو باید اضافه کنم پس بی خیالش شدم.
> 
> ممنون از پاسخ دوستان


بنده هم همین کارو کردم و درست شد.
ممنون از لطف شما و دوستان

----------

