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

إزالة العلل والأخطاء وتصحيحها

مغلق
بدأه HnHn في 8 أغسطس 2006 · 30 رد · 7,959 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
besm.gif

EL_Slam_3laikom.gif

كيف يمكن إزالة العلل والأخطاء وتصحيحها

IconHnHn.gif

يتضمن VB.NET عدة ادوات جديدة لإيجاد وتصحيح الأخطاء المألوفة سابقا في VB6 كـــ (Step Over , RunTime , Next , End , Break )و كان في VB6 اوامر إزالة العلل من بينها شريط ادوات Debug أما في VB.NET قتم تغيير ذلك إلى Autos , Command , Call Stack ....وهذه للمعلومية فقط ولن نستعلمها ولكن قد تجدها مفيده في البرامج المتطورة .. أما ما سنتكلم عنه هو اغلب ما يصادفنا في برامجنا وهو كالتالي !

هناك ثلاثة أنواع من الأخطاء الشائعة في VB.NET وهي ....

[1] اخطاء التركيب اللغوي Syntax errors

[2] اخطاء وقت التشغيل Runtime errors

[3] اخطاء منطقية Logic errors

سنتحدث الآن عن كل خطأ بشرح مبسط لنرى ما يسبب حدوثه ...... !!!

الخطأ الأول :

اخطاء التركيب اللغوي أو النحوي / وهي أخطاء برمجة تحدث نتيجة خطأ في صياغة كلمة أو خاصية مكتوبة بشكل غير صحيح كالتالي

Selsct case TeBox.Sel.index 

Csae 1	'

Case 2 

Case 3 

End select

طبعا الخطأ في هذه الكلمة Csae 1 كان المفروض أن تكون Case 1 وهكذا مع بقية الجمل البرمجية التي قد ننسى تكملتها

الخطأ الثاني :

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

الخطأ الثالث :

اخطاء منطقية / وهي أخطاء بشرية من صنعنا كالمعادلات والجمل التكرارية الا منتهي والقيم والخاطئة ... مثال ذلك المعادلة التالية

If Age > 13 And Age < 20 Then 
MsgBox "You're Teenager"			   
Else 
MsgBox "You're not Teenager"
End If

هل يمكنك معرفة المشكلة مع بنية القرار هذه ؟؟؟

المراهق هو شخص عمره بين 13 و 19 سنة ولكن البنية المنطقية هنا تفشل في التعرف على الشخص البالغ عمره 13 فالماذا ؟؟

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

.

كيف تستطيع أن تتفادى الاخطاء ؟

-_- تقبلوا امتناني

هاني احمد

تم تعديل هذه المشاركة بواسطة HnHn في 11 أغسطس 2006 في 12:46

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#2

السلام عليكم

أخى الكريم هانى (HnHn)

موضوع رائع وأرجو انا تكمل بنا لمعرفه بقيه الأخطاء

فلو كل عضو عرف عن خطأ عنده سوف نستطيع بناء برنامج بدون أخطاء بأذن الله

وبالنسيبه لسؤالك فهذا تصحيح الكود

If Age >= 13 And Age < 20 Then 
MsgBox "You're Teenager"			   
Else 
MsgBox "You're not Teenager"
End If

طبعا لأنك قلت أكبر من وبدون يساوى فان البرنامج مش هيقبل الرقم 13 هيبقل الى أكبر منه بس

طبعا ده شىء بسيط ولكن بدايه رائعه

جزاك الله كل خير

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#3

السلام عليكم

أولا : شكرا لك على هذه الدورة الرائعة و التي نحن بأمسّ الحاجة لها و جزاك الله خيرا و زادك من علمه

ثانيا : الجواب على السؤال السابق هو لأن الشخص البالغ 13 غير داخل بالشرط أو مستبعد لأن الإشارة هي > (أكبر تماما) من 13 و لحل هذه الخطأ المنطقي هناك طريقتين

الأولى نجعل السطر الأول من جملة الشرط هكذا :

If Age >= 13 And Age < 20 Then

و هكذا نكون قد أدخلنا 13 بسن المراهقة بطريقة مباشرة

و الثانية

If Age > 12 And Age < 20 Then

و هكذا نكون قد أدخلنا 13 بسن المراهقة دون ذكره أي أن كل من هو فوق سن 12 بما فيها 13 هو مراهق

أرجو أن يكون هذا المقصود بالسؤال

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

و شكرا

#4

بارك الله فيك اخى هانى،،،ونرجو الاستمرار فى الطرح.....

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#5

IconHnHn.gif

-_- فعلا أخ GENIUS-IT و golden man الاجوبة صحيحة

فهذا النوع من الأخطاء ليس خطأً في التركيب اللغوي أو الذهني او المنطقي وأنما هو خطأ في بنية القرار لأحتوائه على عامل أكبر من أو يساوي

(=<)

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

كيف تستطيع أن تتفادى الاخطاء أو حلها ؟

[1] تفادي أو حل الاخطاء اللغوي Syntax errors

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

Errtest.JPG

[1] تفادي أو حل اخطاء وقت التشغيل Runtime errors

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

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

Try 
.
.......  Code
..
.
Catch 

MsgBox "يوجد خطأ "
أو تنفيذ امر أو شيفرة أخرى

[1] تفادي أو حل الاخطاء المنطقية Logic errors

كما قلنا سابقا تعد هذه الأخطاء هي الأصعب في تصحيحها أو تفاديها في بعض الأحيان لأنها نتيجة تفكير وتخطيط خاطىء <_< ولتفادي حدوث اخطاء أو حلها يجب علينا أولا معرفة مكان الخطأ والذي يتم عن طريق تنفيذ شيفرة برنامجك سطرا واحدً كل مرة لفحص محتوى متغير واحد أو خاصية واحدة أو اكثر ولتحقيق هذا سنتعامل مع شريط الادوات Debug Test لمعاينة الشفيرة والتأكد من سلامتها وسنأتي على شرح هذا الشريط وتفاصيله في الدرس القادم والآن سؤال هذا الدرس .......

عندي مشروع وقاعدة بيانات على سطح المكتب وعندما حاولت الاتصال بقاعدة البيانات ظهر لي خطأ في هذه السطور الموجودة في الصورة حيث ان اسم القاعدة صحيح ولكن هناك خطأ آخر بطبع أنا اعرفه :lol: وانتم تعرفونه ولكن ما اريده هو معرفة نوع هذا الخطأ من الانواع التي تم طرحها في الدرس الأول ؟

Errtest2.JPG

تقبلوا امتناني -_-

تم تعديل هذه المشاركة بواسطة HnHn في 11 أغسطس 2006 في 12:47

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#6

السلام عليكم

أخى الكريم HnHn

جزاك الله كل خير على هذا الشرح الجميل

وبالنسبه للسؤال يأخى بصراحه انا مش قادر افرق اذا كان الخطأ ده خطا وقت التشغيل ولا خطأ فى الكتابه

بس الأرجح انه خطأ كتابى Syntax errors

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#7

الخطأ هو من نوع Run time Error "خطأوقت التشغيل" بسبب مسار قاعدة البيانات الخاطئ،،،

الخطأ هو من نوع Run time Error "خطأوقت التشغيل" بسبب مسار قاعدة البيانات الخاطئ،،،

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#8

بعد ما أجاب الأستاذ SOLO.NET ليس لنا جواب

أنا أقول أنه خطأ وقت التشغيل أيضا لأن هذا المثال مطابق لمثال مسار الصورة و هو ناتج عن تغيير مسار قاعدة البيانات

#9

السلام عليكم

أخوانى الكرام

انا لى اعتراض على كلامكم بس بصراحه اانا مش متأكد قوى من الى هقوله بس منطقيا كلامى صح

انا مبتدىء فى visual basic .net

بس مش المفروض لما اربط قاعده بيانات بعرف المتغير Cn كده

dim strconnect as New connection
او كده
dim strconnect as new Oledb.connection

ثانيا انا مش عارف اذا كان ممكن نمرر للمتغير Cn كود فتح القاعده مباشره كده ولا لا

ثالثا انا عايز اعرف ايه الخطأ فى مسار قاعده البيانات أعتقد انه صحيح

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#10

السلام عليكم

أخي كلامك صحيح بالنسبة لتعريف متغير من نوع connection و لكن الأخ هاني كتب جزء من الكود ذلك الذي يوجد الخطأ به و هو الذي ظهر في رسالة الخطأ

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

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

C:\Documents and Settings\Golden\سطح المكتب
#11
اقتباس
بس مش المفروض لما اربط قاعده بيانات بعرف المتغير Cn كده

انت قمت بتعريف كائن الاتصال،،الاخ هانى قام بانشاء متغير نصى واسند اليه نص الاتصال والذى بدوره يتم تمريره الى كائن الاتصال لحظة الانشاء او عن طريق الخواص

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#12

السلام عليكم

اشكركم أخوانى على توضيح الموضوع

وانا لم أكن أقصد انكم على خطأ ولكنى لم أكن متأكد من كلامى 100%

وبالتعاون سوف يستفيد الجميع

وفى انتظار الأخ هانى وبالتأكيد سيكون عنده الحل الصحيح

تم تعديل هذه المشاركة بواسطة GENIUS-IT في 10 أغسطس 2006 في 23:03

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#13

بصراحه انا توني في بداياتي واحببت ان اعرف هذا الدرس بتفاصيله وشدني اسلوب ومواضيع الاستاذ الكبير HnHn ماشالله عليه ... واريد ان اتقدم بجوابي لأرى ان كنت على صواب ام لا فأن مع الأخ GENIUS-IT من انه خطأ في التعريف ولهذا سيكون نوعه من الاخطأء الكتابيه Syntax errors وأنا محتار لأن استاذي الكبير SOLO.NET تقدم بجواب مخالف لما قدمته ولكني هذا ما لمسته واريد ان ارى ما يمكنني أن اصل إليه واعتقد اننا كلنا بنتظر الجواب الشافي والأكيد

تم تعديل هذه المشاركة بواسطة marahbb في 10 أغسطس 2006 في 23:10

#14

IconHnHn.gifالجواب الصحيح للسؤال الثاني .. هو جواب الاستاذ SOLO.NET

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

أخواني الكرام لو دققتم قليلا لوجدتم بأني قلت اين مكان الخطأ

اقتباس
عندي مشروع قاعدة بياناته على سطح المكتب

بينما لو تلاحظ في الاكواد أن المسار المحدد للقاعدة هو القرص :C والفروض ان يكون المسار هو سطح المكتب كما وضح الاخ الكريم golden man مشكورا .... وقد اخبرتكم في درس تفادي الاخطأ أننا لو نعطي القليل من الانتباه والتركيز في التركيب أو في صياغة المسألة سنستطيع تمييز الخطأ وهذا ما حدث مع الاخ GENIUS-IT و الاخ marahbb في عملية عدم التمييز B) وهذه فقط سطور معدودة فلو كانت عدة أخطاء متداخله مع بعضها فماذا سيحدث <_< .. بطبع سيحدث التالي ....؟؟؟ وبشكل مبسط عن عملية تداخل الاخطأء سأذكرها على طريقة مراحل .. وسأبدء بتعقيدها في الدروس القادمة إن شاء الله

المرحلة الأولى لمعالجة الأخطاء بأخطاء

من ستحدث له مشكلة المسار مثلا سيأتي لأحد المنتديات وسيسأل عن سبب مشكله واجهته ويريد حلها .. وسيكون سؤاله كالتالي

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

Err3.JPG

لو لاحظنا أن الخطأ كان في مسار الاتصال .... :C ولكن الخطأ يظهر عند فتح الاتصال بالقاعدة كما تقدم الاخ بالسؤال ولكنه لا يدري ان خطاءه في المسار .. لأنه غالباً لا يكون التحديد الذي يشار إليه هو الخطأ .. قد تكون هناك مسائل ومشاكل في السطور السابقة فانتبه ! قد يكون تعريف أو نقطة أو حرف زائد .. أو أو أو

وسيقوم احد الأخوان مشكورً برد عليه واعطاءه حل المشكلة في المسار .. طيب بعدها لاحظ اخي الكريم ما سيحدث !!!!

المرحلة الثانية لمعالجة الأخطاء بأخطاء

سيقوم الاخ الكريم بتعديل مسار القاعدة على حسب مشروعه إلى التالي

		Dim strConnect As String = _
			"Provider=Microsoft.Jet.OLEDB.4.0;" & _
			"Data Source= C:\Documents and Settings\HnHn\Desktop\db.mdb;" & _
			"Persist Security Info=False"

		'Declare and Open OLEDBCONNECTION FOR Access2k database
		Dim ocon As OleDbConnection = New OleDbConnection(strConnect)
		ocon.Open()

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

استاذي الفاضل SOLO.NET

بعد اذنك أترك اجابتك بعد اجابات الاعضاء وانت تعرف لماذا؟؟ B) وايضا لكي نرى وجهة نظرهم وقدرتهم على اكتشاف الاجابة :

تقبلوا امتناني

هاني احمد

تم تعديل هذه المشاركة بواسطة HnHn في 11 أغسطس 2006 في 12:46

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#15

حقيقة في مداخلتي هذه اود فقط ان أشكرك اخي HnHn على درسك الجديد الجميل و اتمنى ان يستفيد الجميع منه و ان تجد التفاعل الذي تأمله حتى يكون زادك من أجل اتمام ما بدأته و تقبل مني فائق التقدير و الاحترام و السلام عليكم

#16

السلام عليكم

أخى الكريم HnHn

أولا مشكور على توضيحك الخطأ الذى كنت فيه ومشكور أيضا أخى SOLO.NET على أجابتك الصحيحه

ثانيا أعتقد يأخى HnHn انا الخطأ هذه المره فى انه ثبت مسار القاعده على ال desktop

الخاص ياليوزر بتاع الجهاز ده الى هو c:\document & setting \HnHn\desktop

وهنا المشكله ان البرنامج عند تنصيبه اين سيضع قاعده البيانات هل سوف يضعها فى نفس المسار المذكور

أعتقد لا لان الجهاز الذى سيتم تنصيب البرنامج عليه من الممكن انا لا يحتوى على يوزر HnHn

وبهذا لن يجد البرنامج القاعده

هذا ما أستطعت رؤيته من الكود المرفق

ولى سؤال ما هو هذا الكود

cursor=cursor.waitcursor

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#17

IconHnHn.gif

021.gif برافووو عليك وعلى تفاعلك المتميز اخ GENIUS-IT .. واشكر حضورك وتواجدك معنا استاذ crazy-man

نعم الاجابة صحيحة كان من المفترض ان يستخدم حاجه اسمها محدد المسار كما في VB6

App.Path

و في VB.NET

Application.StartupPath

اما بالنسبة لسؤالك اخ GENIUS-IT

Cursor = Cursors.WaitCursor

فهو عبارة عن كود لتحويل مؤشر الفأرة إلى شكل عامود خلال تنفيذ الشفرة وفي نهاية الشفرة يمكنك اعادة المؤشرة للوضعيه الافتراضية بطريقة التالية

Cursor = Cursors.Default

معالج الأخطاء باستعمـــال Try.... Catch

تعمل معالجات الاخطاء بتوجيه البرنامج كيف يعمل حينما يصادف خطأ وقت التشغل او غيره حيث كان من ابرز معالجات الاخطاء في VB6 مايلي :

[1] On Error GoTo - [3] Resume - [2] Resume Next

أما في VB.NET فختلف الأمر وسنتعرف على Try.... Catch وبعض خصائصها كـ

[1] Err.GetException - [3] Err.Description - [2] Err.Number

متى يجب استعمال معالجات الأخطاء ؟

يمكنك استعمال معالجات الأخطاء في أي حالة قد تؤدي فيها عمل متوقع أو غير متوقع إلى حصول خطأ يوقف تنفيذ البرنامج كــ

[1] مشاكل الشبكة في الملقمات أو غيرها ..

[2] مشاكل محركات الأقراص والتعامل معها

[3] مشاكل المسارات

[4] مشاكل الطابعات

[5] مشاكل البرامج الغير مثبته (اداوت Dll ووغيرها )

[6] مشاكل الصلاحيات

[7] مشاكل نفاذ الذاكرة

[8] مشاكل الحافظة

[9] مشاكل الأخطاء المنطقية (<> % + * )

وهذه اغلب المشاكل التي تحدث ولا ننسى ان هناك اخطاء منا نحن في صياغة الاكواد وتنسيقها وكتابتها بشكل صحيح ....

كيف يتم استخدام Try.... Catch

بناء على مثال المسار الخاطىء للقاعدة سيتم تفادي هذا الخطأ في فتح الاتصال برسالة توضيحيه كما يلي :

		Try

		Dim strConnect As String = _
			"Provider=Microsoft.Jet.OLEDB.4.0;" & _
			"Data Source= C:\Documents and Settings\HnHn\Desktop\db.mdb;" & _
			"Persist Security Info=False"

		'Declare and Open OLEDBCONNECTION FOR Access2k database
		Dim ocon As OleDbConnection = New OleDbConnection(strConnect)
		ocon.Open()

		Catch


	MsgBox("فضلا تأكد من مسار القاعدة ")

جرب اخي الكريم احداث بعض الاخطاء في برنامجك واستخدم جملة معالجة الاخطاء Try.... Catch ولاحظ هل سينفع الامر ام لا .... أما سؤال الدرس فهو

على الرغم من اننا استخدمنا جملة معالجة الأخطاء في كود الاتصال بالقاعدة إلا أن الرسالة التنبهية التي وضعناها للتوضيح لن تظهر وستظهر هذه الرسالة ونفس التحديد سيظلل على ocon.Open فالماذا ؟

Err4.JPG

واذا لم تظهر الصورة يمكنك تحميلها

:

post-22194-1155327167_thumb.jpg

تم تعديل هذه المشاركة بواسطة HnHn في 11 أغسطس 2006 في 23:25

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#18

اشكرك لما تقدمه لمن هم في مستواي بشرح مفصل وجميل وبأعتقادي أن الخطأ في مكان Try

حيث أن اللي في الصورة موضوعه فوق ocon Open أما اللي في الأكواد موضوعه فوق التعريف Dim

#19

السلام عليكم

أخى الكريم هانى

أعتقد ان هذا الخطأ ظهر لان معالج الأخطاء موضوع قبل أمر فتح القاعده

Try
 OCON.OPEN()
Catch

بينما أعتقد ان رساله الحطأ كانت على هذا الكود

Dim ocon As OleDbConnection = New OleDbConnection(strConnect)

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#20

السلام عليكم

أخي HnHn لقد جربت هذا الكود و لم تظهر أي مشاكل

	   Dim strConnect As String = _
			"Provider=Microsoft.Jet.OLEDB.4.0;" & _
			"Data Source= C:\Documents and Settings\HnHn\Desktop\db.mdb;" & _
			"Persist Security Info=False"

		Dim ocon As OleDb.OleDbConnection = New OleDb.OleDbConnection(strConnect)

		Try

			ocon.Open()

		Catch ex As Exception

			MsgBox("فضلا تأكد من مسار القاعدة ")

		End Try

علما بأني أستخدم فيجوال بيسك 2005 فهل هذا هو السبب؟

#21

السلام عليكم

أخى الكريم golden man

أعتقد ان الخطأ ليس فى الكود الظاهر ولكن الخطأ له علاقه بـ IMPORTS

وأيضا عندما جربته أعطى رساله خطأ وطلب كتابه END TRY

وانا أيضا أستخدم Visual studio 2005

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#22

انا لما اخذت الكود اللي عدل عليه الاخ golden man وجربته ... ضبط معي وظهرت الرسالة

ولكن بعد أن اخذت الكود الذي قام بأرفاقه الاستاذ HnHn ظهرت لي رساله خطأ وطلب كتابه END TRY

كما حدث مع الاخ GENIUS-IT لهذا اعتقد ان المشكلة في ذكر انهاء الجملة END TRY

#23

السلام عليكم

إخواني إن الخطأ ليس في كتابة جملة End Try لأن عدم كتابتها يؤدي إلى حدوث خطأ في التركيب الللغوي (Syntax error) و هذا مناقد للرسالة التي تظهر و التي تدل على أن البرنامج قد بدأ التشغيل و هذا يدل على خلوّه من الأخطاء اللغوية

و لكن إن ما يحيرني هو عدم وجود نقطة بين كلمة ocon و Open() و ولا أدري إن كنت لا أرى جيدا و لكن قد كبّرت الصورة إلى درجة 400% و لم أرى النقطة حيث بقيت أدقق بالصورة أكثر من ربع ساعة و لكن ما يحيرني أكثر هو أن عدم كتابة النقطة يؤدي إلى خطأ في التركيب اللغوي و هذا يؤدي إلى عدم تشغيل البرنامج و الأمر الذي أتعبني أكثر أني لم أستطع إظهار رسالة شبيهة بالرسالة التي ظهرت عند الأستاذ HnHn

#24

السلام عليكم

أخى الكريم golden man

على حد علمى القليل بالدوت نت

انه يجب عند التعامل مع oledb كتابه الكود التالى

Imports.system.data.oledb

ولكن فى رساله الخطأ هنا شيئا زائد على هذه الجمله هو OLEDB.EXCEPTION

ثانيا انا اعرف ان الخطأ فى جمله end try

هو خطأ لغوى ولكن ما كنت أقصده هو ان هذا هو الخطأ الوحيد الذى ظهر لى فعلا شىء محير

وبالنسبه لموضوع النقطه فأنت محق ولكن أيضا هى لن تسبب رساله الخطأ الظاهره

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#25

-_- ان ما توصلتوا له جميعا هوالاصح وهذا ناتج من عملية تجربة وهذا ما اريد أن ابينه لكم ..وليس كما اقترحتم في بداية الاجوبة بخطأ مكان معالج الأخطأ ... فالخطأ واضح بأننا لم ننهي جملة Try بـ END TRY

أما اليوم سنتعرف على شريط Debug في اكتشاف الاخطاء ... وبالأخص الأخطاء المنطقية ..

Err5.JPG

اصطياد العلل والأخطاء المنطقية !

سنرى الآن كيف نكتشف الخطأ في المعامل المنطقية لعمر المراهق في المثال السابق والمرفق لديكم لكي تبدؤ بالتجربة بتباع الخطوات التالية ... .

[1] أظهار شريط Debug بالضغط على قائمة Debug << Toolbars << View

[2] سننتقل للشفرة المكتوبة وننقل مؤشر الماوس إلى شريط الهامش الرمادي مع اول سطرنريد تفحصه ومن ثم نضبط نقطة توقف البرنامج للتجربة كما في الصورة ...

Err6.JPG

[3] بعدما تدخل عمرالمراهق في التيكس بوكس المخصص لك في المثال المرفق والذي سيكون 13 لأن هذا ما نريد تفحصه أن كان صحيح أم لا قم بتشغيل البرنامج بالضغط على Start ستلاحظ أن البرنامج سيتوقف (Break) عند النقطة المحددة كما في الشكل

Err7.JPG

[4] سنقوم بعدها بالضغظ على زر Step Into لكي يفحص السطر الذي بعده ... كما في الصورة

Err8.JPG

عند الضغط على Step Into مرة اخرى من المفترض ان ينتقل إلى سطر اظهار الرسالة في حال صحة المنطق وهذا طبعا لن يحدث لأن المنطق خاطىء .. وستلاحظ ان التحديد سينتقل إلى جملة Else وبعدها إلى الرسالة الخاطئة ..

[5] سنعود إلى التحديد السطر الذي في الصورة السابقة ومن ثم ستضغط على قائمة Autos << Windows << Debug وسيظهر اطار Autos في الاسفل لكي يبي لك حالة المتغيرات ومن ضمنها ستلاحظ التغير age ستكون قيمته 13

Err9.JPG

[6] من نفس أطار Autos اضغط على خيار أو زر Watch1 في الاسفل وستلاحظ قيمة المتغير age > 13 = False بينما age < 20 = True وهنا المسألة واضحه كما يلي أذا كانت القيم المنطقية صحيحة ستعطى True أم اذا كانت خاطئة ستعطى False كما في الصورة

Err10.JPG

[7] اخيراً ستقوم بتعديل القيم المنطقية التي امامهاFalse إلى ان تتحول إلى True

Err11.JPG

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

******

B)وهذا اليوم لن أسأل لأني سأتركم تجربون الخطوات .. . وسيكون درساً القادم في معالجة الأخطاء الأكثر تعقيدا ....

مع اطيب تمنياتي بالتوفيق للجميع

Test.rar

تم تعديل هذه المشاركة بواسطة HnHn في 13 أغسطس 2006 في 01:25

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة

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

مواضيع مشابهة