مشاريع
أقسام المقالات
Total Articles: 19
مؤتمرات وأحداث
مراكز وانجازات
.net 2008 Course
آخر 10 مواضيع
كتب وملخصات
Tips & Tricks
INotifyPropertyChanged
الأحد، ٢٧ أبريل ٢٠٠٨

سوف نتحدث في هذه المقاله عن (Interface) يسمى INotifyPropertyChanged و وظيفته ان يلاحظ التغيرات التي طرأت على Property
في تطوير التطبيقات لزم ان ننتبه بأن ال GUI و ال Logic منفصلان تماما بمعنى، عندما تطور تطبيقا وهذا التطبيق يحتوي على GUI مثلا Form تحتوي على Button وعندما تضغط على ال Button تقوم بفعل شئ يجب الا تكتب ماسوف تفعله داخل Button click event ولكن Call methos
مثال

   1: private void button1_Click(object sender, EventArgs e)
   2:         {
   3: DoSomething();
   4:          }

اولا لكي تستخدم هذا ال Interface اكتب using System.ComponentModel;
ثانيا اجعل Inherits from INotifyPropertyChanged your class
و expose its member public event PropertyChangedEventHandler PropertyChanged
ثالثا مع كل Property نريد ان نعرف اذا ماكنت عدلت ام لا نضع هذا الكود مثلا عندي Property تسمى Name

 



   1: public string Name
   2: {
   3: get { return name; }
   4: set { name = value; 
   5: OnPropertyChanged("Name");//point 4 
   6: }

هذا هو ال Class الذي يحتوي على ال Property التي اريد اعرف ما اذا تغيرت



   1: using System.ComponentModel; //point 1
   2: class Person:INotifyPropertyChanged //point 2
   3: {
   4:  
   5: string name;
   6: public string Name
   7: {
   8:  
   9: get { return name; }
  10:  
  11: set { name = value; 
  12: OnPropertyChanged("Name");//point 4 
  13:  
  14: }
  15:  
  16: }
  17:  
  18: protected void OnPropertyChanged(string property)//point 3
  19: {
  20: if (PropertyChanged != null)
  21: {
  22: PropertyChanged(this,new PropertyChangedEventArgs(property));
  23: }
  24:  
  25: }
  26: public event PropertyChangedEventHandler PropertyChanged;//point 2

و هذا هو ال GUI



   1: Person p = new Person("FCI-H", 1);
   2: p.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(p_PropertyChanged);
   3: void p_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs
   4: e)
   5: {
   6: switch (e.PropertyName)
   7: {
   8: case "Name":
   9: nameTxt.Text = p.Name;
  10: break;
  11: }
  12: }

التسميات:


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Ramy Mahrous @ ٤:١٨ م   0 تعقيبات
إبدأ LINQ
الأربعاء، ٢٣ أبريل ٢٠٠٨

رابط الكتاب

http://www.vb4arab.com/vb/uploaded/2730/11202261862.pdf

مؤلف الكتاب : غير معروف

التسميات: , ,


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Ahmed Gamal @ ١:١٦ ص   0 تعقيبات
برمجة اطار عمل ‎.NET باستخدام Visual Basic .NET

كتاب الاستاذ تركي العسيري بعنوان
برمجة اطار عمل ‎.NET باستخدام Visual Basic .NET


يمكن تحميل الكتاب بواسطة الضغط على هذا الرابط
http://www.al-asiri.com/ShowRecord.a...4-8958244bca4c


موقع ومدونة blog الأستاذ تركي العسيري
http://www.al-asiri.com/

التسميات: ,


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Ahmed Gamal @ ١:١٢ ص   0 تعقيبات
برنامج و ذكر المؤمنين
الثلاثاء، ٢٢ أبريل ٢٠٠٨

برنامج و ذكر المؤمنين لتنبيه مستخدم الماسنجر و اصدقائه بمواعيد الصلاه عن طريق تحويل الرسالة الشخصية ( Personal message) لاحد الجمل تشير لوقت الصلاه ....

ما الفرق بين هذا البرنامج و برنامج الا صلاتي ؟
و للاجابه بختصار ... كل برنامج له العديد من المميزات التي تختلف عن الاخر ... و لكني سأركز هنا علي الهدف الاساسي من كلا منهم ....
نعم هناك وجه تشابه واحد بين الاثنين و هو ان الاثنين صنعا من اجل التنبيه لمواعيد الصلاه.... ولكن كل برنامج متخصص في جزء معين لا يقوم الاخر به حتي هذه الاصداره و ذلك لاختلاف اهداف كل منهم ...
فبرنامج الا صلاتي الهدف منه تنبيه مستخدم الجهاز بموعيد الصلاه عن طريق رساله تنبيه تخرج لمستخدم الجهاز او صوت الاذان الذي يقوم بالاذان وقت الصلاه ....
اما برنامج و ذكر المؤمنين فالهدف منه هو تنبيه مستخدم الجهاز و جميع اصدقاءه الموجودين معه في برنامج الماسنجر ام اس ان الشهير .... لأنه الشئ المشترك بين معظم مستخدمي شبكه الانترنت .... عن طريق تحويل الرسالة الشخصية ( Personal message) لاحد الجمل تشير لوقت الصلاه ؛ يتضح من شعار البرنامج ... صوت الاذان في عالم الويب ...كطريقه لإعلاء صوت الاذن في ذلك العالم الواسع ... و أملا في ان يلتفت له احد اصدقاءك و فتحصد الثواب بإذان الله ...
تخيل معي اخي الكريم .... لو قام الجميع بتنصيب هذا البرنامج ... ستتحول وقت الصلاه جميع الرسائل الشخصية ( Personal message) الي تنبيه للصلاه لدقائق ثم يسترجع كل ماسنجر رسالته السابقه و كأن شئ لم يكن ....حقا انه" صوت الاذان في عالم الويب" .

الموقع الالكتروني http://w-zakker.blogspot.com/

لتحميل البرنامج :

http://www.4shared.com/file/30407135/83b63242/Wa_Zakker_Al-momnen.html?dirPwdVerified=3e1f7af5/30407135...wdVerified=3e1f7af5

==== لتحميل سورس كود البرنامج : سي شارب 2
http://www.4shared.com/file/32927910/9e38a460/TheSourceCodeCSharp2-WaZakkerAlmomnen-.html?dirPwdVerified=3e1f7af5

التسميات:


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Ahmed Essawy @ ١:٣٤ م   0 تعقيبات
جديد:التنقل بين النوافذ
الأحد، ٢٠ أبريل ٢٠٠٨
هل سئمت كثرة النوافذ في مشاريعك حيث انك اذا اردت الانتقال من النافذة الاولى الى نافذة غير ظاهرة تظطر الى الانتقال نافذة نافذة اطمئن فقد ادركت مايكروسوفت ذلك وقامت باقتباس الفكرة الموجودة في ويندوز الا وهي CTRL+TAB
صدق اولا تصدق لن اكمل كلامي فالصور ابلغ من الكلام
Windows









Visual Studio

التسميات:


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Dr.Athman A O Baathman @ ٨:٥١ م   0 تعقيبات
إعداد الفيجوال ستوديو لتنقيح الشفرات المصدرية لإطار عمل .نت
السبت، ١٩ أبريل ٢٠٠٨


إعداد الفيجوال ستوديو لتنقيح الشفرات المصدرية لإطار عمل .نت

مقال مترجم عن مدونة Schwan burke’s

أخيرا، و في سابقة في تاريخ مايكروسوفت، أصبحت الشفرات البرمجية لمكتبات الفريم وورك .نت مفتوحة المصدر بحيث صار بامكان المبرمج أن يطلع على الشفرات المصدرية مع جميع التعليقات التي كتبها المطورون في ال BCL Team.

خلال هذا المقال سنتعرف سويا على الخطوات الواجب تنفيذها للوصول إلى الشفرات المصدرية للفريم وورك .نت


أعلن
Scott Guthrieأحد رؤساء فرق التطوير الخاصة بتقنيات الدوت نت في فرع مايكروسوفت للبرمجيات أن الشركة وضعت تحت تصرف المبرمجين إمكانية قراءة الشفرات البرمجية الخاصة بإطار عمل الدوت نت من الفيجوال ستوديو 2008.

البرامج اللازم تثبيتها:

- عليك أن تعرف أن هذه الخدمة غير متوفرة في النسخة المجانية Express للفيجوال ستوديو 2008.
1. أولا عليك تنصيب البرنامج
Visual Studio 2008 QFE، هذا البرنامج عبارة عن ملف تصحيح يقوم بتحديث مكتبة DLL خاصة بمنقح الفيجوال ستوديو لكي يصبح قادرا على استخراج و إظهار الملفات الخاصة بالشيفرات المصدرية.

يمكنك تنزيله بالضغط فوق اسمه كما يمكنك قراءة معلومات مفيدة على صفحة التنزيل.

- إذا حصل خطأ أثناء عملية التنصيب حاول بإدخال قرص الدي في دي الخاص بالفيجوال ستوديو، قد يكون هذا الخطأ ناتج عن إمكانية تعارض ناتجة عن وجود نسخة أقدم من الفيجوال ستوديو.

2. بعد استكمال عملية التنصيب، قم بتشغيل الفيجوال ستوديو 2008 و اذهب إلى Tools > Options > Debugging > General إن كنت تشغل الفيجوال ستوديو على إعدادات الفيجوال بيسك افتراضيا عليك بضبط خانة الخيارات الموجودة في أسفل نافذة الإعدادات قبل المواصلة .قم بتغيير قيم الاعدادات التالية :

- Enable Just My Code: اضبطها على الخيار OFF.

- Enable Source Server Support: اضبطها على الخيار ON.ستكون نافذة الاعدادات الخاصة بالفيجوال ستوديو كما في الصورة التالية:


3. انتقل من التبويب General إلى التبويب Symbols كما يظهر في الصورة الآتية و قم بتغيير الخصائص الثلاثة التالية:

أ‌. قم بإضافة العنوان التالي إلى منطقة الSymbol file location :
http://referencesource.microsoft.com/symbols
ب‌. قم باختيار مجلد لتخزين الملفات الcash التي يتم تنزيلها من الخادم على العنوان السابق و تأكد من أن المجلد ليس للقراءة فقط. الاختيار الأفضل هو مجلد تحت مجلد حسابك (c:\users\yourUserName\symbols تحت الفيستا أو c:\ documents and settings\yourUserName\symbols تحت الوينداوز xp).

ت‌. قم بتفعيل الخاصية Search the above locations only when symbols are loaded manually.و هذه هي صورة نافذة الإعدادات بعد القيام بالتعديلات السابقة:


انهينا عملية التنصيب... إلى العمل

التنقيح داخل شيفرة اطار عمل الدوت نت

قبل أن نبدأ عليك أن تعرف أن الكلمة الانجليزية symbol التي ترجمتها إلى رمز تعني إما حقل، أو فئة أو طرق أو أي شيء يمكنك أن تتبع شيفرته.

سنستعمل مثال بسيط باستخدام لغة السي شارب على مشروع من نوع Windows Application Project لكن يمكنك استعمال نفس الخطوات على أي مشروع آخر بلغة أخرى.
1. قم بإنشاء مشروع جديد من نوع Windows Application Project ثم اضغط مرتين على النموذج ليظهر لك محرر الشيفرات كما في الصورة التالية،



قم بكتابة الشيفرة كما يظهر في الصورة و أضف نقطة توقف (Breakpoint) على سطر الأمر
2. الآن قم بتشغيل البرنامج بالضغط على الزر F5، سيتوقف المترجم عند نقطة التوقف التي أضفتها، و قم باظهار نافذة رصة لاستدعاءات (Call Stack) بالضغط على الاختصار (CRTL+ALT+C) ، بعدها قم بالضغط على بالزر الأيمن للفأرة على عنصر يبدأ ب System.Windows.Forms.dll من عناصر القائمة واختر الأمر "Load Symbols"، هذه العملية تقوم بتحميل ملفات الشيفرات البرمجية الخاصة بالمجمع System.Windows.Forms من عنوان السيرفر و الذي يبلغ حجمها حوالي 10 ميغا بايت، لذلك عليك الصبر قليلا ان كان اتصالك بشبكة الانترنت بطيئا.



ستتوقف بيئة التطوير عن الاستجابة أثناء عملية التنزيل، ولكن عملية التنزيل هذه لن تتكرر لأن ملف الشيفرات سيخزن في مجلد الكاش (الذي قمت باختياره سابقا) على شكل ملف PDB خاص بكل مجمع على حدة، يمكنك الاستعلام عن تقدم عملية التنزيل بمشاهدة منطقة ال ProgressBar في شريط الحالة Status Bar.

3. ستلاحظ بعد انتهاء عملية التنزيل أن لون العناصر التي تبدأ ب System.Windows.Forms.dll من اللون الرمادي إلى اللون الأسود، الآن يمكنك أن تشاهد الشيفرات المصدرية الخاصة بكل حدث، خاصية أو طريقة لجميع عناصر المجمع الخاص بمجال الأسماء Windows.Forms بالضغط عليها بالزر الأيمن و اختيار الأمر Load Symbols في كل مرة تريد الاستعلام عن شيء ما.



يمكنك الآن تتبع سير الشيفرة الخاصة ببرنامجك و تتبعها سطر بسطر باضافة نقاط التوقف و استعمال الزر F11 الذي يقوم بتنفيذ الشيفرة سطر بسطر، كما يمكنك مواصلة التنقيح خطوة خطوة داخل ملف الDLL الخاص بالمجمع باختيار العنصر الذي تريده من نافذة ال Call Stack و الضغط على الزر F11 مجددا لينتقل المترجم إلى ملف الشيفرة.

4. عند فتح الشيفرة المصدرية لأول مرة، ستشاهد ال EULA (الاتفاقية النهائية بين المستخدم و الشركة)، عليك بالضغط على موافق Accept لتبدأ عملية التنزيل.



لمشاهدة أي شيفرة مصدرية لمجمع آخر، عليك بإتباع نفس الخطوات السابقة، مع ملاحظة أن عملية التنزيل لكل شيفرة مصدرية خاصة بمجمع جديد تتطلب الموافقة على شروط ال EULA مرة واحدة لكل مجمع.في بعض الحالات قد لا تجد اسم المجمع الذي تريد أن تشاهد الملفات المصدرية الخاصة به في نافذة ال call stack.


قبل أن تضغط على الزر F11 للدخول إلى الشيفرة المصدرية لل Graphics.DrawRectangle يجب أن تقوم بتحميل ملفات الpdb الخاصة بهذا المجمع و عرض الرموز Symbols الخاصة بجميع المحتويات و ذلك بعرض نافذة Modules Window بالضغط على الاختصار CTRL+ALT+U (ستظهر هذه النافذة أثناء عملية التنقيح فقط). ستقوم النافذة بعرض لائحة بجميع الرموز المحملة من طرف المنقح، اختر System.Drawing.DLL في القائمة و اضغط بالزر الأيمن لاختيار الأمر Load Symbols كما يظهر في الصورة التالية:

لاحظ أنه بمجرد تحميل ملف الرموز، ستجد مساره معروضا في العمود « Symbol File »الآن يمكنك أن تدخل إلى شفرة الأمر Graphics.DrawRectangle وتتبع عملية الترجمة خطوة خطوة بالضغط على الزر F11.

للمستخدمين المتقدمين


اعتياديا، في كل مرة تبدأ فيها عملية تنقيح، بيئة التطوير Visual Studio تقوم بتحميل الملفات اللازم لكل مجمع تود تتبع التنقيح فيه، بعد أن يتأكد من وجود الملف في المجلد الذي يخزنها فيه (و الذي قمنا بشرح كيفية اختياره و تغييره في الفقرات السابقة)، بعض المشاريع تتطلب الكثير من ملفات pdb الخاصة بكل مجمع ما يجعل العملية تتطلب بعض الوقت و قد تتطلب وقت كبير جدا في حالة عدم وجودها على القرص الصلب لأنه سيقوم بتنزيلها من الموقع، لذلك ننصح بتتبع عملية التنقيح يدويا عن طريق اختيار الأمر Load Symbols من القائمة المنسدلة (كما شرحناها سابقا) بدلا من الاعتماد على الترجمة سطرا سطرا بالضغط الزر F11 لهذا السبب، قمنا باستعمال عملية التحميل اليدوية سابقا.

على كل حال، هناك طريقة لجعل عملية التحميل تلقائية لتفادي عملية التحميل اليدوية المملة و في نفس الوقت تسريع العملية، وذلك بفتح نافذة الإعدادات و اختيار التبويب Symbols (يمكنك الدخول إليها مباشرة باختيار الأمر Symbols Settings من القائمة المنسدلة فوق نافذة رصة الاستدعاءات (call stack window) أو نافذة ال Modules (CTRL+ALT+U) (ستظهر هذه النافذة أثناء عملية التنقيح فقط)) بعدها قم بنزع العلامة صح من أمام الاختيار Search from the above locations… (كما في الصورة الآتية)، الهدف من هذه العملية هو جعل المنقح في بيئة التطوير يقوم بتنزيل جميع ملفات pdb من الموقع مع أول عملية ترجمة للمشروع (F5).بعد أن تقوم بنزع العلامة قم بإغلاق بيئة التطوير و أعد فتح مشروعك من جديد، عندما تكون مستعدا لعملية التنزيل الكلية عليك بترجمة المشروع بالضغط على زر F5 ومن ثم ستبدأ عملية التنزيل لجميع ملفات الpdb المتعلقة بمشروعك و تخزينها في القرص الصلب. عليك أن تعلم أن حجم هذه الملفات في العادة هو 50 ميغا و هو حجم كبير نسبيا و قد يتطلب بعض الوقت، لذلك لا تجزع إن لم تستجب بيئة التطوير و يستحسن أن تتركها و تقوم بعمل آخر.


بعد استكمال العملية، قم بتوقيف المنقح و عد إلى نافذة الإعدادات و قم بنزع العلامة صح من أمام عنوان موقع التحميل و أضغط على موافق كما يظهر في الصورة التالية:


الآن بعد استكمال جميع هذه المراحل يمكنك الآن أن تواصل عملية التنقيح اعتياديا (من نافذة رصة الاستدعاءات) دون المرور بالمراحل السابقة.

عليك أن تعرف أن الانتقال إلى مشروع آخر يستعمل مراجع إلى مجمعات مختلفة أو أردت أن تضيف مجمعات جديدة إلى المشروع لتستعملها يتطلب إعادة القيام بالمراحل السابقة مع العلم أن المجمعات التي تم تنزيل ملفات الpdb الخاصة بها لا يعاد تنزيلها إن استعملها مشروع آخر.

بعض الأسئلة و الإجابات عنها:

الكاتب الأصلي للمقالة يتكلم هنا...

1/ ما هي المجمعات التي تتوفر ملفات pdb لها؟

· Mscorlib.DLL

· System.DLL

· System.Data.DLL

· System.Drawing.DLL

· System.Web.DLL

· System.Web.Extensions.DLL

· System.Windows.Forms.DLL

· System.XML.DLL

· WPF (UIAutomation*.dll, System.Windows.DLL, System.Printing.DLL, System.Speech.DLL, WindowsBase.DLL, WindowsFormsIntegration.DLL, Presentation*.dll, وبعض المجمعات الأخرى)

· Microsoft.VisualBasic.DLL

2/ عندما أقوم بالضغط على الخيار Load Symbols من القائمة المنسدلة تظهر لي نافذة فتح ملفات تسألني عن ملف ال PDB، لماذا؟

تظهر هذه النافدة في حالة من الحالات التالية:

- لم تقم بوضع عنوان مصدر الملفات من شبكة الانترنت بطريقة صحيحة، تأكد من وضع هذا العنوان كما أوضحنا سابقاhttp://referencesource.microsoft.com/symbols

- لقد قمت باختيار عنوان مجلد لا تملك صلاحية التعديل فيه.

- لقد قمت باختيار مجمع غير موجود في القائمة أعلاه.

- تأكد إن كنت تملك نسخة أخرى من إطار العمل .نت مثبتة على جهازك، قد يحصل هذا إن كنت تستعمل مثلا النسخة التجريبية Beta من نظام التشغيل windows server 2008، للتأكد من أنك تملك النسخة المتوافقة، اذهب إلى نافذة ال Modules بالضغط على (CTRL+ALT+U) (ستظهر هذه النافذة أثناء عملية التنقيح فقط) و التأكد من أن رقم النسخة الخاص بالمجمع mscorlib.dll هو 2.0.50727.1433 كما في الصورة التالية، أو تأكد من أنك قمت بتثبيت الإضافة RTM Version of the .NET Framework 3.5. بصورة صحيحة.

- تأكد من وجود الملف symsrv.yes في المجلد \..\Microsoft Visual Studio 9.0\Common7\IDE و أعد تشغيل بيئة التطوير

3/ عندما أحاول فتح أو الدخول إلى نافذة الكود، أتلقى رسالة تقول "Source is not available for this location"أو تظهر لي رسالة الحوار السابقة، ما هو السبب؟

أولا عليك أن تطالع السؤال السابق لكي تتأكد من أن ملفات الPDB قد تم تحميلها بصورة جيدة، يمكنك التأكد من ذلك بمشاهدة العمود « Symbols Status »

إذا كان الحقل في الخانة « Symbols Status » يحمل العبارة "Symbols loaded." عليك بالتالي:

- إذا قمت بضبط Microsoft Symbol Serverسابقا، يمكن أن تكون قد قمت بتنزيل ملف ال PDB للمجمع لكنه لا يحتوي على معلومات عن الشفرة. حاول أن تغير مسار تخزين الملفات أو قم بحذف المجلد نهائيا و أعد عملية التنزيل بالضغط على الأمر Load Symbols (الطلع على السؤال التالي للمزيد من المعلومات).

- تأكد من أنك قمت بتفعيل خانة الخيار Enable Souce Server في نافذة الاعدادات على المسار التالي: "Enable Source Server" item on the Tools -> Options -> Debugging -> General

- تأكد من أن حسابك يملك صلاحية التعديل على مجلد التخزين (لمستعملي الفيستا بصفة خاصة)

4/ أنا أستعمل خادم مايكروسوفت Microsoft Symbol Server لتنزيل ملفات الشفرات منه، ما الفرق بينه و بين الطريقة التقليدية؟

موقع Microsoft Symbol Server يوفر ملفات PDB بدون أي معلومات عن الشفرة بداخلها، هذه المعلومات تم حذفها قبل نشرها رسميا على الموقع الذي استخدمناه سابقا خلال هذا الشرح لتنزيل ملفات ال PDB.( http://referencesource.microsoft.com/symbols).

الهدف من إضافة مصدرين للملفات و هما العنوان السابق (http://referencesource.microsoft.com/symbols) الذي يوضع قبل المصدر الثاني وهو عنوان خادم مايكروسوفت (Microsoft Symbol Server) هو تمكين المستخدم من القيام بعملية تنزيل مرة واحدة لجميع الملفات الخاصة بالمجمعات المستعملة من طرف المشروع (كما شرحنا في فقرة للمستخدمين المتقدمين) و الهدف هو تسريع العملية أكثر بالبحث عن معلومات الملف من المصدر الأول و من ثم تنزيله من المصدر الثاني ... قم بإضافة عنوان الموقع Microsoft Symbol Serverإلى قائمة المصادر - كما يظهر في الصورة – ومن ثم قم بترجمة المشروع و عند الانتهاء قم بنزع العلامة صح من على مصادر التنزيل

عليك أيضا أن تعرف أن وجود مصدرين مختلفين سيولد مشاكل في حالة أن أردت أن تقوم بعملية تحديث (لمجلد ملفات pdb في القرص الصلب ) بتنزيل ملفات جديدة لمشروعك لأن بيئة التطوير ستواجه مشاكل وخلط بين المصدرين، لذلك يحبذ حذف المصدر الثاني.


5/ هل تعمل هذه الميزة مع النسخة 64-bit؟

نعم، لقد وفرت مايكروسوفت أيضا للنسخة 64 bit ملفات ال PDBs، وهي في مجملها تدعم في نفس الوقت جميع أنواع البنيات التحتية و لا تحتاج لوجود نسخ منفصلة لكل بنية.

6/ كيف لي أن أضع نقطة توقف داخل شفرة للفريم وورك .نت؟؟

نعم يمكنك ذلك، قم بوضع نقطة توقف عادية داخل الشفرة ، بعدها اضغط عليها بزر الفأرة الأيمن و اختر Location من القائمة المنسدلة كما في الصورة التالية :



بعدها اجعل الخيار "Allow Source to be Different" يحمل علامة صح و اضغط على موافق OK




سترى أن النقطة تعمل بصورة طبيعية.

إذا كنت تستعمل هذه الميزة بصورة متكررة، قم بنزع العلامة صح من أمام الخيار "Require source files to exactly match the original version." الذي تجده في تبويب Debugging من نافذة الإعدادات الخاصة ببيئة التطوير (Tools->Options->Debugging)

7/ لماذا لا تعمل بعض الأدوات مثل "Go To Definition"مع شفرة للدوت نت؟

إن عملية التنقل من المتغير إلى مصدر تعريفه داخل شفرة عادية تتخل عن حالة الشفرة المصدرية في الدوت نت لأن المعلومات الإضافية عن المتغيرات مثلا غير موجودة في ملف ال PDB لأنها تستعمل أثناء عملية ترجمة المجمع و تنفيذه.

8/ لماذا بعض العناصر (خصائص أو طرق) أو بعض المتغيرات المحلـية غير ظاهرة أثناء عملية التنقيح؟

بتات –Bits- الملفات الdll الخاصة بمجمعات مكتبات إطار عمل الدوت نت التي قمت بتثبيتها على جهازك هي في الحقيقة مجزئة، و هذا يعني أنها مجزئة لتحسين الكفاءة بتقليل المساحة المحجوزة. جزئ من عملية زيادة الكفاءة يتطلب حذف بعض المعلومات من ال Process الموجودة في الذاكرة (التي تستعمل فئات هذه المجمعات) و التي لا حاجة لها. إذن عملية تنقيح هذه المجمعات المجزئة تتأثر.

كما أن بعض المناطق في الشفرة المصدرية لا تقبل وضع نقاط توقف للتنقيح دخلها و لا تمكنك أصلا من تتبع عملية الترجمة سطرا سطرا بداخلها، لكن معظم الفئات قابلة للتنقيح.

9/ لماذا عملية تنزيل بعض ملفات الشفرات تتطلب وقت طويل؟

بعض ملفات الشفرات كبيرة جدا – حوالي 1 ميغا – وهي الملفات الضرورية في معظم الحالات للأسف.

10/ هل أستطيع تنزيل جميع الشفرات مرة واحدة؟

حتى الآن غير ممكن، لكن العمل جاري على قد وساق لتوفير هذه الإمكانية مستقبلا.

11/ عندما أقوم بتنقيح شيفرة بلغة الفيبي، مثلا تنقيح المجمع Microsoft.VisualBasic.dll أجد تعليقات في الأسفل مكتوبة بلغة السي شارب، هل هذه شائبة (خطأ)؟ليس كذلك، في الحقيقة أثناء قيامنا بنشر الشفرات و إضافة تعليقات حقوق النشر إليها في أسف الصفحة، كان مولد الشفرات في ذلك الوقت لا يدعم توليد شفرات مكتوبة بنسق لغات مختلفة في نفس الوقت.

12/ لقد قمت بالدخول إلى ملف الشفرات وكل ما قد قمت بتنزيله كان ملفا فارغا؟

لقد رأينا هذا الأمر من قبل بشكل متقطع و لم نبحث في أسبابه، إذا رأيت نفس الشيء فالحل هو إعادة تشغيل الفجوال ستوديو ليقوم بإعادة تنزيل الملف أرجو أن تراسلنا (فريق التطوير الخاص باطار العمل) مع إعطاء الاسم المعطوب و تاريخ حدوث الخلل.

13/ ما الذي سيحدث إن قمت بتنزيل ملف تصحيح (HotFix) أو حزمة تحديثservice pack ؟ هل أستطيع أن أشاهد الشفرات الخاصة به؟

لقد قمنا ببناء نظام يمكننا من توزيع نسخ متعددة من شفرات خاصة بمنتج (حسب نسخته)، ولم نتخذ أي قرار حول كيفية توزيع هذه النسخ وهي اقتراحات مفتوحة للمستعملين و المبرمجين. مثلا، انه واضح أن عملية وضع شفرة خاصة بحزمة تحديث أمر مفروغ منه لكن الأمر صعب بعض الشيء في اتخاذ قرار حول وضع شفرة خاصة بكل عملية تصحيح، ولا نزال في حاجة إلى اقتراحات أو أي ملاحظات.

في انتظار اتخاذ أي قرار، عليك أن تعرف بأن ملفات ال PDB لا تتوافق مع بعض الشفرات الأصلية الخاصة بمجمع إن تم تحديثه بواسطة ملف تصحيح (HotFix). في هذه الخالات، نافذة ال Modules التي تكلمنا عليها سابقا ستخبرك بأن عملية تنزيل ملف الPDB الخاص بالمجمع غير ممكن. بافتراض أن نسخة جديدة من هذه الملفات تم نشرها، سيتعين عليك إعادة عملية التنزيل من جديد.

14/ هل أستطيع أن أدخل من المتصفح إلى موقع تنزيل ملفات ال PDB و أقوم بتنزيل الملفات يدويا؟

لا تستطيع، وستظهر لك رسالة الخطأ التالية: HTTP 400 (Bad Request)


التسميات:


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Boutemine Oualid @ ٤:١٩ م   0 تعقيبات
Traffic Monitoring System

اسم المشروع : نظام لمراقبة المرور مع نموذج للقيادة الآلية .
Traffic Monitoring System With Automatic Driving Model

المشروع فائز بالمركز الأول على مستوى جمهورية مصر العربية في يوم الهندسة المصري EED فرع IT .

clip_image001

فريق العمل :
1- أحمد جمال خليفة .
2- أحمد سعيد أنور .
3- أحمد عماد أحمد .
4- أحمد محمد عيسوي .
5- حسام الدين محمد صادق .
6- خالد عادل محمد سلامة .

clip_image002clip_image003

clip_image004clip_image005

اسم المشرف :
بروفيسور: عراقي خليفة .
م. عمر غنيم .

الكلية والجامعة :
جمهورية مصر العربية - جامعة حلوان - كلية الحاسبات والمعلومات - قسم علوم الحاسب.
السنة : 2007 .

وصف مختصر للمشروع :
المراحل الأساسية للمشروع - باختصار شديد - لمزيد من التفاصيل راجع ال Documentation في آخر الموضوع .

مقدمة :
أصبح لأنظمة الكومبيوتر الآلية تأثير عميق على حياتنا اليومية حيث أصبحنا نرى كل يوم أبحاث ومشاريع جديدة من أجل استخدام الكومبيوتر لتسهيل الحياة وتخفيف الضغوط التي يتحملها البشر .
والمشروع عبارة عن مزيح من آخر التقنيات التي قدمت في هذا الفرع من علوم الكومبيوتر المتعلقة بالرؤية الحاسوبية ونظم دعم اتخاذ القرار المقدمة في مجال تطوير المدن الآلية ، حيث يستخدم النظام للمساعدة في عملية المراقبة ، ازدحام الطرق ومراقبة اشارات المرور وتدفق السير في المدن ، هو عبارة عن نظام لمراقبة السير ودعم قرارت القيادة الآلية حيث أن هذين النظامين لم يتم ربطهما سوية من قبل .
وكل ما نطمح إليه حالياً هو تقديم خطوة في طريق تطبيق نظام مراقبة في الواقع عن طريق دعمه للتكامل مع النموذج المستقبلي لنظام القيادة الآلية من خلال نموذج مصغر لمدينة تحتوي على سيارات يتم التحكم بها عن بعد وتتم ادارته من خلال الكومبيوتر .

المصاعب الأساسية التي واجهت النظام :
تعتبر الاستجابة اللحظية للأوامر الصادرة عن طريق الكومبيوتر للسيارة هي العقبة الأولى في المشروع نظراً للزمن الذي تستغرقه عمليه تحليل الصور على حاسب آلي متوسط السرعة ، والوقت الذي تستغرقة الأوامر للانتقال في ظل حاجتنا إلى أسرع استجابة ممكنة ليمكن تطبيق النظام في الواقع .

السيناريو :
* مخطط لسيناريو المشروع :

clip_image006

* مخطط Collaboration Diagram للمشروع :

clip_image007

وصف المشروع :
باختصار شديد : المشروع يحتوي على كاميرا تقوم بارسال صور فورية إلى الكومبيوتر الذي يقوم بتحليلها وفهمها والخروج ببعض التقارير والإحصائيات عن الطرق ونظام المرور ، وفي الجزء الثاني من المشروع وعند بداية مهمة لتحريك السيارة من نقطة إلى أخرى يتم الرجوع إلى هذه المعلومات لحساب الطريق الامثل للتحرك من خلاله ، وأخيراً يتم اللجوء إلى بعض مبادئ Physical Computing من أجل تحريك السيارة الموديل الموجودة في المدينة المصغرة .
وسنبدأ الآن في الشرح التفصيلي لبعض المراحل باختصار .

معالجة الصور :
المرحلة الأولى في عملية معالجة الصور هي مرحلة Road Extraction حيث يتم معرفة الطرق الموجودة في المدينة عن طريق مراحل متعددة تمر بها عملية استخراج الطرق بعد ذلك يمكن حصرها اجمالاً في المراحل التالية (Generate Road Seed points, Snaxles, Snakes) حيث يتم التعرف في آخر مرحلة بصورة مفصلة على جميع الطرق غير المستقيمة أو المنحنية بانحناءات متعددة .

وباختصار شديد فإن هذه المرحلة تعتمد على ما يسمى باسم Edge Detection كمرحلة أساسية في هذه الخطوة حيث نقوم بقراءة الصورة ومحاولة استخراج الحواف المميزة لها :

clip_image008

في الخطوات التالية نقوم باستبعاد تلك التي تمثل مباني مثلاً أو ناتجة عن تشويش في الصورة ، نقوم بدمج الخطوط سوية ... الخ .
وبما أن الناتج لن يكون بالطبيعي 100% فإننا نسمح للمستخدم بالانتقال إلى شاشة رسم الطرق والتعديل حيث يمكنه اضافة وحذف الطرق الخاطئة كما يمكنه تسمية الشوارع والمباني وغيرها ...
المرحلة الثانية في عملية معالجة الصور هي متابعة تحركات السيارات في المدينة ، ويتم ذلك أيضاً عبر مجموعة من العمليات الخاصة بكيفية استخراج خلفية فارغة من جميع السيارات دون الاضطرار لتصوير المدينة وهي فارغة ، ومن ثم البدء في قراءة الصورة عن طريق الطرح المباشر كخطوة أولى ، وهذه مجموعة من الصور :

clip_image009clip_image010clip_image011clip_image012

الخطوة الثانية تعتمد على البدء الفعلي في قراءة الصور ويتم ذلك عبر تحويلها إلى صور Binary مع تطبيق بعض ال morphological filtering من اجل توضيح الصورة ، وهذه المحصلة النهائية لهذه العمليات :

clip_image013

الخطوة الأخيرة هي البدء بتتبع هذه السيارات فترة عمل النظام ، ويتم ذلك باستخدام LUCAS-KANADE OPTICAL FLOW ALGORITHM على سبيل المثال .
نظام الإحصائيات والتقارير القيادة الآلية :
بعد أن استطعنا في المرحلة السابقة معرفة أماكن السيارات في المدينة وحالة الطرق ، جاء دور المرحلة الثانية من النظام والتي تتلخص في الاستفادة من هذه البيانات ، وتتم الاستفادة من هذه البيانات بطريقتين :

نظام الإحصائيات والتقارير :
حيث يتم عرض تقرير فوري بحالة الطرق ونسب الإزدحام وخلافه .

نظام القيادة الآلية :
وهذا هو الجزء الثاني من المشروع ، حيث يتم كبداية تحديد مهمة للانتقال من نقطة أ إلى نقطة ب .
أول العمليات التي يتم تنفيذها هي حساب ال Best Path عن طريق معادلة لكل طريق يتم من خلالها اختيار الطريق الأنسب وبدء العمل على تحريك السيارة من خلاله

clip_image014

والآن ننتقل إلى الجزء الآخر ، وهو كيفية تحريك السيارة على هذا المسار ، فعلى الجانب الأول هناك بعض الأمور الخاصة بالالكترونيات والتي سنناقشها في النقطة التالية ، أما الجزء الخاص بالمعادلات فهو موضوعنا هنا .
حيث أنه طوال فترة حركة السيارة فإنه يتم عمل العديد من المعادلات الرياضية من أجل ضمان حركة السيارة ضمن الطريق ، الالتفاف في الملفات المحددة لذلك ، التأكد من وجود مساحة كافية للتحرك إلى الأمام ، وضمان عدم الاصطدام بالأجسام المحيطة .

الهاردوير Hardware :
كما أسلفنا في النقطة السابقة ، فإنه تلزمنا بعض التعديلات ليصبح بمقدورنا تحريك السيارة الموديل عن طريق الكومبيوتر .
بداية استعنا بسيارة ريموت كنترول RC Car مع مراعاة وجود أكثر من تردد Frequency في حالة استخدام أكثر من سيارة أو استخدام crystals أو Removable Strips من أجل تجنب تداخل الموجات .
ثم قمنا بعمل موديل لمدينة مصغرة وقمنا برسم بعض الطرق وبناء بعض المباني كما هو موضح في الصور المرفقة .
وقمنا باستخدام كاميرا عادية لالتقاط الصور .
المرحلة الأولى هي ربط الكاميرا بالكومبيوتر ، وتم ذلك عبر منفذ USB حيث يمكن قراءة الكاميرا بأكثر من طريقة وحسب لغة البرمجة المستخدمة .
الخطوة الثانية هي ربط الريموت بالكومبيوتر ليتم التحكم في السيارة ، ويتم ذلك عن طريق استخدام مبادئ ال Relays والتي تسمح للتيار بالمرور في الريموت عند تلقي أمر معين من الكومبيوتر من خلال منفذ الطابعة Parallel Port .
وهاتين الصورتين توضحان الفرق بين الريموت العادي حيث يتم تحريك صفائح على بعضها مقارنة بالريموت الجديد حيث أصبح ال Relay هو المتحكم في توصيل الكهرباء .

clip_image015clip_image016

التطبيق في العالم الواقعي :
لكي يصبح هذا النظام قابلاً للتطبيق في أرض الواقع وعلى مدينة حقيقة فإنه ما زال بحاجة إلى بعض التعديلات ، نوجزها في الثلاث نقاط التالية :

- من جهة معالجة الصور : سيتم استبدال الكاميرا بصور مباشرة للأقمار الصناعية مثل Googel Earth والتي بدأت تقدم خدمات بث مباشر لبعض المدن حول العالم .
أيضاً لا زلنا بحاجة للمزيد من التسريع والدقة في عمليات معالجة الصور ، أيضا لمزيد من الفلترة للمؤثرات الجوية الخاصة مثل الغيوم ، الأمطار ... الخ .
- من جهة نظام قيادة السيارة : لن يتحمل السيرفر وحده عبء القيادة بل سيكون هناك جهاز على السيارة أو Microcontroller يستقبل المسار ويبدأ في توجيه نفسه بنفسه وذلك منعاً لتثقيل العمل على السيرفر وزيادة في السرعة .
أيضاً سيتم استخدام دوائر كهربائية مثل ultra-sonic حتى في الموديل الصغير لتلافي الاصطدامات التي تنتج عن أجسام مفاجئة حيث تقوم بارسال واستقبال موجات ويتم احتساب زمن ارتدادها لمعرفة ومن خلالها يمكن معرفة المسافة التي تفصلها عن أقرب جسم في الاتجاه والزاوية التي ترسل بها الموجات .
- من جهة نظام التحكم والاتصال : لن يتم الاتصال عبر موجات Radio عادية بل لا بد من وجود Wireless network ، والشرط الأهم هو كونها محمية وهو ما لم تتوصل إليه البحوث حتى الآن حيث لا توجد شبكة لا سلكية محمية بصورة كاملة أبداً .
ومن الجهة الأخرى فنحن بحاجة إلى تطويع هاردوير السيارات لاستقبال أوامر عن طريق الكومبيوتر وهو ما لا يعد مرحلة صعبة من ناحية التطبيق ، ولكنه سيواجه مشاكل عديدة تنتج عن سرعة السيارة مثلاً وسرعة الاستجابة للأوامر في ظل سيرها على سرعات كبيرة والتوقف المفاجئ وتوقع الاعطال وغيره .

المشروع :


تم تسليم المشروع باستخدام C# ولكن بداية العمل في المشروع لم تكن كذلك ، حيث تم استخدام MATLAP نظراً لكونه الأسهل في التعامل مع ال Image Proccessing ، ومن ثم تم ربطه بالنظام الذي قمنا بعمله من خلال C# ولكن وبالرغم من ذلك فلن تجد اللغة المستخدمة تفرق كثيراً حيث أن أغلب البرنامج عبارة عن معادلات وقوانين لن يختلف تطبيقها من لغة إلى أخرى أبداً .
وللتحويل إلى C# تم استخدام SharperCV وهي مكتبة مفتوحة المصدر متخصصة في عمليات ال Image Proccesing وهي عبارة عن Warrper لمكتبة OpenCV التي تم تصميمها للعمل على C++ ، وسبب الاستعانة بهذه المكتبة هو التعقيد الكبير الذي سينتج عن استخدام أكواد سي شارب مباشرة في كل عملية من عمليات معالجة الصور التي نستخدمها نظراً لإنك ستضطر للتعامل مع المؤشرات Pointers وهو ما يضطرك لاستخدام unsafe code ، وبصراحة فهي لا تعطيك كافة المميزات التي تقدمها لك لغة مثل C++ وفي نفس الوقت تحرمك من السهولة التي تجدها في الماتلاب .
ولكن هذا لم يمنع استخدام أكواد مباشرة في كثير من الأحيان ، وإنما تم استخدام SharperCV فقط في العمليات المتكررة أو التي يتم التعامل فيها مع كمية كبيرة من الأكواد حيث تختصر عليك ال SharperCV جزء كبير من المهمة برغم كثرة مشاكلها ، ولكنك ستجد نفسك مضطراً في النهاية للبرمجة اليدوية .
كان بالإمكان اضافة حل آخر وهو استخدام عمليات التحويل من ماتلاب إلى .net ولكن ظهور بعض المشاكل أدى إلى ايقاف هذه العملية ، عموماً ما زالت جميع مراحل العمل على معالجة الصور موجودة من خلال matlap ومن خلال C# أيضاً .
أما الجزء الآخر الخاص بالنظام والشاشات والقيادة الآلية ومعادلات الحركة والربط بالكاميرا من جهة أو الربط بالسيارة من جهة أخرى وعمليات التعديل والتحرير وقواعد البيانات والتقارير وخلافه فقد تمت برمجته باستخدام C# مباشرة .
لقطات وصور من المشروع :

clip_image017clip_image018
clip_image019clip_image020

لقطات وصور من البرنامج :

clip_image021clip_image022clip_image023
clip_image024clip_image025clip_image026

وهذه نسخة من ال Documentation للمشروع يمكن الاطلاع عليها من خلال هذا الرابط :
http://hammada2091.googlepages.com/Documentation.pdf

مراكز أخرى حققتها جروبات كلية حاسبات ومعلومات حلوان :

http://www.fcih.net/details.asp?id=94

التسميات: ,


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Ahmed Gamal @ ١١:٥٥ ص   0 تعقيبات
الفروقات بين C# And VB.net - الخلاصة 99% تشابه

في هذه المقالة أهدف إلى توضيح بعض الفروقات بين C# و VB.net في اشارة إلى أن الفروقات بينها 90% فقط في طريقة الكتابة ، ولن أناقش مبدأ أنهما متشابهان في البنية التحتية فهذا أمر مفروغ منه ، ومن أجمل ما قرأت مقال الأستاذ أيمن المدهون بعنوان : لا تكذبي إني رأيتكما معاً ، على هذا الرابط :

http://www.vb4arab.com/vb/showthread.php?t=726

ولكني الآن سأبدأ بالتعرض لأوجه الخلاف ، وستكتشف في نهاية الدرس أن ليس ثمة اختلافات حقيقة بل هي لعبة تسويقية من مايكروسوفت كي لا تخسر مبرمجي فيجوال بيسك ، وفي نفس الوقت لتجذب إليها مبرمجي عائلة C .

وسأضع هنا تنويهاً عن الفروقات الغوية الأبرز وأحيلك في آخر الدروس إلى موسوعة للفروقات بين هاتين اللغتين ، ولنبدأ بالفروقات اللغوية - فروق غير ذات قيمة - :

* أولاً : كونك مبرمج سي شارب لا تنس أن تضع ; في آخر كل سطر

* ثانياً : طريقة تعريف المتغيرات :

VB.net :

Dim X as Integer
Dim X as ClassName=new ClassName()



C#

int x;

ClassName x=new ClassName();




* ثالثاً : في حالة الشروط في VB.net اكتب = أما في C# اكتب == ، كما ستجد العلامة != لعدم المساواة بدلاً من <> .

* رابعاً : تعتمد لغة VB.net على جمل مثل End وتستخدمها في الاجراءات والكلاسات وغيرها مثلاً :

if x=1 Then

End if




بينما تجدها في C# باستخدام الأقواس :


if(x==1)

{

}



وكذلك في الكلاس والاجراءات أيضاً :


VB.net :

Imports System

Namespace MyNameSpace

Class HelloWorld

'Entry point which delegates to C-style main

Private Function

Public Overloads Shared Sub Main()

Main(System.Environment.GetCommandLineArgs())

End Sub

Overloads Shared Sub Main(args() As String)

System.Console.WriteLine("Hello World")

End Sub 'Main

End Class 'HelloWorld End Namespace 'MyNameSpace





C# :


using System

Namespace MyNameSpace

{

class HelloWorld

{

static void Main(string[] args)

{

System.Console.WriteLine(
"Hello

World"
)

}

}

}




* خامساً ، في فيجوال بيسك .net سوف تستخدم And,Or,Not,OrElse بينما في C# سوف تستخدم && ! .

* سادساً : عند جمع النصوص استخدم & في VB.net ولكن في C# استخدم + .

* سابعاً : else if في C# هي ElseIf في VB.net

* ثامناً : كما اسلفنا في موضوع End ، ففي الحلقات التكرارية تعتمد C# على الأقواس أيضاً :


for (i = 2; i < = 10; i += 2)

{

System.Console.WriteLine(i);

System.Console.WriteLine(i*10);

}



وفي حالة كونها سطر واحد يمكن الاستغناء عن الأقواس :


for (i = 2; i < = 10; i += 2)

System.Console.WriteLine(i);




أما في VB.net فهي تأخذ شكلاً موحداً :


For c = 2 To 10 Step 2

System.Console.WriteLine(c)

Next



ونفس الأمر بالنسبة لباقي الحلقات التكرارية While و for each وخلافه .


* تاسعاً : بالنسبة للمصفوفات وخلافه يستخدم القوس [] بدلاً من () في VB.net .

C#

int[] nums = {1, 2, 3};

for (int i = 0; i < nums.Length; i++)

Console.WriteLine(nums[i]);




Vb.net

Dim nums() As Integer = {1, 2, 3}

For i As Integer = 0 To nums.Length - 1

Console.WriteLine(nums(i))

Next



* لن تجد تعليقاً Comment لأكثر من سطر في VB.net مثل /* */ في C# ، وكذلك XML Comments على الرغم من أنني قرأت انها ستكون مدعومة في الاصدارة القادمة .

* في C# سوف تستخدم العلامة المئوية % بدلاً من Mod في VB.net للحصول على باقي القسمة .

* لن تدعم لك VB.net استخدام Bitwise Operations في حالة Assignment على عكس ال C# حيث تتيح لك ذلك .

الآن نترك عنا الفروقات اللغوية ، فسوف نشير للباقي منها في نهاية المقال ، نتطرق هنا على عجالة للفروقات الفعلية :

* أول تلك الفروقات هي case sensitive ، حيث أنه في VB.net فإن Ahmed هي نفسها ahmed وهو ما لا يوجد في أي لغة في العالم سوى Basic ، ولا أستطيع أن أحدد فيما إذا كان هذا ميزة أم عيب .

مميزات في VB.net - باختصار - :

* دعم ال optional parameters موجود في VB.net وليس موجود في C# .

* with موجود في VB.net وليس موجود في C# .

* Catch ... When موجودة في VB.net وهي تتيح نظاماً أفضل لفلترة الأخطاء .

* يقوم VB.net بعمل Compile للكود في BackGround ، وهذه ميزة في التطبيقات الصغيرة ولكنها عيب في التطبيقات الكبيرة حيث تلاحظ بطء الفيجوال ستوديو .

مميزات في C# - اختصار - :

* يدعم C# ما يعرف باسم unsigned types ، وهو ما يمكنك استخدامه أيضاً في VB.net ولكنه ليس جزءاً اساسياً من اللغة .

* الميزة الأقوى في C# والتي لا تتوفر في VB.net هي السماح باستخدام

unsafe أو unmaneged code ما يتيح لك العمل على Pointers وخلافه ، ما يفتح لك آفاقاً واسعة في عدة مجالات مثل معالجة الصور image processing وخلافه .

ولعل هذه الميزة مما جعل C# قريبة من C++ من ناحية تعاملها مع كود منخفض المستوى Low Level Code وهو ما يجعل سي شارب الاختيار الأمثل للكثيرين .

* لن تجد increment و decrement في VB.net حيث ستتضطر إلى كتابة كود بالشكل التالي :

A=A+1

A-=1



بينما في C# يمكنك القيام بذلك بالشكل التالي :



A++

A--



* يمكنك أن تجد الخاصية sizeof في C# بينما لن تجدها في VB.net .


كان هذا موجزاً لأوضح الاختلافات والتي ستتعامل معها كثيراً ، وكما لاحظت فهي في أغلبها ليست ذات قيمة كبيرة .

في النهاية : ماذا أختار ؟

إذا كنت منتقلاً من VB 6.0 فعليك ب VB.net أما إذا كانت لديك خبرة ب C/C++/Java فعليك ب C# وإذا كنت جديداً في مجال البرمجة فأنت حر في اختيار ما يناسبك .

وفي النهاية ومهما كان اختيارك قم بالاطلاع على اللغة الثانية - علشان تضحك على الناس وتقول انا ببرمج بلغتين مش لغة واحدة - ، ويمكنك ايضاً في هذه الحالة أن تبرمج ب J# ويبقى اسمك ادام الناس بيبرمج ب 3 لغات

في آخر هذا الدرس أحيلك إلى هذا الرابط (متميز) ويشرح الموضوع بتفصيل كامل ، أتمنى لك الاستفادة منه .

http://www.codeproject.com/dotnet/vb...difference.asp

أيضاً الملف من موقع مايكروسوفت لتوضيح الفروقات :

http://support.microsoft.com/kb/308470

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

التسميات: ,


يوجد بقية للمقال . اضغط هنا لقراءتها

تم التحرير بواسطة Ahmed Gamal @ ١:١١ ص   0 تعقيبات
الصفحة الرئيسية
Google Search
Google
       

كتاب المدونة
من نحن ؟
مجموعة من الكتاب باللغة العربية بلغة الدوت نت ، نلتقي هنا لكي نتشارك الخبرات والمعلومات حول الجديد في عالم الدوت نت
ارشيف المواضيغ والمقالات السابقة
VB.net <> C#

الفروقات بين سي شارب و في بي . نت
روابط ومواقع تقنية عربية
عداد الزيارات
Locations of visitors to this page
أشخاص شرفونا بزيارتهم
مركز التحميل
© 2005 DotNet4Arab Blogspot Template by Isnaini Dot Com