الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الكونات في VC

مغلق
بدأه C&DEL في 1 يناير 2004 · 6 رد · 614 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله و البركات :

طرحت هذا السؤال مسبقا بالمنتدى لكن لم أجد الجواب الشافي حتى الآن له ، و السؤال هو :

هل توجد مكونات بالـVC++ نستطيع أن نضمنها داخل التطبيق دون الحاجة لتسجيلها أول مرة بالنظام أي :

في لغة VC++ :

-------------------

- مفهوم المكون Component هو نفسه الـActiveX (OCX)

- عندما أريد أن أنشئ مكون وظيفته مثلا تغيير شكل الـDialog الى شكل دائري فان ما يحتاج التطبيق لتشغيله بشكل صحيح هو ملف لاحقته *.ocx أرفقه مع التطبيق و عند تشغيل التطبيق لأول مرة يجب تسجيل هذا التطبيق في Registry نظام التشغيل ...... و باختصار :

عدد الملفات الناتجة عن هكذا مشروع هو اثنان :

الأول : التطبيق نفسه

الثاني : ملف ActiveX ( لا يمكن تشغيل الDialog بشكل دائري بدون تسجيله )

في لغة Delphi :

-------------------

- مفهوم المكون Component يختلف عن VC++ حيث يمكن أن يتم تضمينه داخل التطبيق و بالتالي ( حسب المثال السابق ) :

عدد الملفات الناتجة عن هكذا مشروع هو ملف واحد ( التطبيق نفسه ) و بالتالي لا حاجة لتسجيل المكون بالنظام لأنه مضمن داخل التطبيق و ليس بشكل مستقل كما في VC++

تخمين :

---------

- أطن بأن VC++ يوجد فيها هكذا ميزة و ربما هي ( Add-in أو com أو class جاهز موجود بملف cpp و h و لكن الأخير هي طريقة غير عملية لأنني قد أحتاج لمكون مرئي كوضع ملف فيلم .... الخ )

و مشكورين كثير

مدونتي

http://mbnoimi.net

#2

السلام عليكم ,,,

يا أبو أحمد :

مصطلح Component في ال VC غالبا مايقصد به مكون com ,, وهو بدون واجهه كما في ال ActiveX ,, حيث ال ActiveX في الأصل عبارة عن مكون com ,, وله واجهة IDispatch ,,

ولاأخفي عليك ,, لم أكن اتعامل مع ال ActiveX كثيرا ,, حيث آخر مرة كانت منذ مدة,,

عموما أنا لاأعرف هل توجد مكونات كهذه التي تتحدث عنها في ال VC أم لا ,, حيث قرأت سابقا أنه توجد عدة تقنيات في هذا الأمر أمثال ال OLE وهي النسخة القديمة من ال ActiveX وبعض الامور الاخرى ,, سأرجع لها قريبا ,,

لكن أنت مشكلتك تكمن في التسجيل الذاتي ,, صح ؟

لحل هذه المشكلة أختر ملف ال Setup ,, حيث كل المكونات التي يطلب تسجيلها تسجل في عملية ال Setup ,, لتصبح جاهزة للاستعمال ,,

وأيضا مكونات com ,, يجب تسجيلها ,, حيث بها GUID معرف مستقل ,, يجب أن يكون لديه مدخل في ال Registry ,, ليدل على موقعه الفيزيائي في الهاردسك ,, ليستعمله البرنامج client ,,

أمر آخر مفيد في ال VC ,, حيث أن مكونات ال ocx ,, يمكن استخدامها في نفس الوقت من أكثر من برنامج ,, لكن في الدلفي لاأعتقد ذلك ,, حسب ماذكرت أنت ,, وغالبا توجد طرق أخرى لفعل ذلك في الدلفي ,,

فمختصر الكلام عليك بملفات ال Setup ,, التي تسجل كل المكونات وقت التثيبت ,,

بارك الله فيك ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

فهمتني غلط مرة ثانية :

مشكلتي ليست بتسجيل المكون لأنها و بشكل مجازي ( لا تزعل ) سخيفة و لا يحتاج حتى لاستخدام الحزم ( SETUP ) لأنه بامكانك أن تضع مفاتيح في الريجستري لتدل على مكان توضع المكون على الهارد و بسهولة بالغة ( تابع API )

أما من ناحية استخدام المكون من أكثر من برنامج فهي ميزة حسنة سيئة :

حسنة : عندما يكون عندك عدة برامج ( من صنعك فقط ) تحتاج لهذا المكون ( لكن يمكن الاستعاضة عن ذلك بالمكون الذي يضمن ضمن التطبيق )

سيئة : لأنه بامكان أي مستخدم متقدم ( هاكر صغير مثلي لأنني جربت ذلك ) أن يقوم باختراق هذا المكون بسهولة و اجراء التغييرات حسب ما يريد

أما من ناحية الدلفي فلها المقدرة على انشاء النوعين السابقين بكل سهولة و بالتالي لا توجد هذه المشكلة في الدلفي .

أكرر راجيا مرة أخرى هل يوجد أحد يعرف كيف تتم برمجة مكون غير منفصل عن التطبيق .......... بــــــــــــلـــــيييييييييييـــــــــــــز

مدونتي

http://mbnoimi.net

#4

السلام عليكم ,,

اقتباس
فهمتني غلط مرة ثانية :

يبدو أنني لاأستطيع فهمك مطلقا ,, لأنها المرة ال 100 !! :)

اقتباس
سيئة : لأنه بامكان أي مستخدم متقدم ( هاكر صغير مثلي لأنني جربت ذلك ) أن يقوم باختراق هذا المكون بسهولة

هل يمكن أن توضح بشكل مختصر جدا كيف فعلت ذلك ,, لنستفيد ونضيف شيئا جديدا لعقولنا بالطبع اذا أردت :)

اقتباس
أما من ناحية الدلفي فلها المقدرة على انشاء النوعين السابقين بكل سهولة و بالتالي لا توجد هذه المشكلة في الدلفي

معرفتي بالدلفي ضعيفة للغاية ,, لكن الشيء الذي أعرفه عن برمجة الوندوز ككل ,, أن أي برنامج أو أي مكون يجب أن يرتبط بملف dll وبالطبع حتى مكونات com ,, ماعدا ملفات الرأس وال cpp ,, لكن أن يتم انشاء مكون كامل ,, ويتم الارتباط به بشكل static ,, في وقت التنفيذ ,, فهو أمر مريب حقا ,,"مع أنها ممكنة " ,,

لدي خاطرة في ذهني حول الموضوع ,, لكن أرجو ان تتأكد أنت أولا ,,

انشيء برنامج بالدلفي ليستفيد من مكون تنشئه أنت ,, وصرف البرنامج لانشاء ملف ال EXE النهائي للبرنامج المستضيف للمكون ,,

ثم اذهب الى برنامج يأتي مع حزمة Visual Studio ,, يدعى depends ,, و افتح ملف ال EXE الخاص بك داخله ,, سيقوم عندها باظهار كل الملفات التي يعتمد عليها هذا البرنامج ,, وربما تجد ملف dll أو حتى ocx يكون نفس المكون الذي أنشئته أنت ,, بحيث يتم اخراجه وقت التنفيذ ,, كال Resource تماما ,,

هذه فكرة عموما ,, يمكن أن نعرف من خلالها مالذي يحدث لنتمكن من محاكاة الامر بالشكل المطلوب ,,

وفقك الله ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

ما رأيك بمتابعة الموضوع ...... عما قريب سأضع مكون بالدلفي كما شرت أنا سابقا .... ريثما أعد المكون أرجو أن تقوم أخي HBG بتنصيب الدلفي عندك على الجهاز ان أمكن ....

حسب رأيي الأمر يستاهل المناقشة لأنه مهم جدا

مدونتي

http://mbnoimi.net

#6

السلام عليكم ,,

سأحاول أن أبحث عن مصرف Borland Delphi ,, المشكلة أن الاقراص المضغوطة هنا نادرة قليلا ,, لكن سأجده باذن الله ,,

بالتوفيق ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#7

من أجل البحث في هذا الموضوع ...... أود المساعدة كيف؟؟؟؟؟؟

مدونتي

http://mbnoimi.net

هذا الموضوع مغلق.