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


 
الرئيسيةأحدث الصورالتسجيلدخول

 

 الا خطاء البرمحيه

اذهب الى الأسفل 
2 مشترك
كاتب الموضوعرسالة
mezo_a1
عضو جديد
mezo_a1


عدد الرسائل : 2
تاريخ التسجيل : 08/12/2007

الا خطاء البرمحيه Empty
مُساهمةموضوع: الا خطاء البرمحيه   الا خطاء البرمحيه Emptyالسبت ديسمبر 08, 2007 4:19 pm

بسم الله الرحمن الرحيم

الاخطاء اود ان اتكلم عنة رغم ان الموضوع ربما البعض يعتبره محلول لكن دعنا نتعمق
عندما نقوم ببرمجة نتوقع اخطاء كثيرة من المستتخدام لذا علينا ان نقوم بمعالجة تلك الاخطاء
اولا هناك عدة من الاخطاء منها
1- الأخطاء التركيبية Syntax Errors .
2- أخطاء وقت التشغيل Run Time Errors .
3- الأخطاء المنطقية Logic Errors .
اولا نناقش الاخطاء من النوع التركيبي Syntax Errors :
تعتبر الأخطاء التركيبية من أيسر الأخطاء التي يمكن تحديدها و تصحيحها و هو خطاء كتابة الكود في فيجول بيسك ( لم يدعك فيجول بيسك تكمل مالم تصحح الخطأ )) لذا عندما تكتب كود
فيه خطاء ستظهر هذه الرسالة و توقف البرنامج فورا :

كود:



Private Sub Command1_Click()

Me.BackColor 0 ' انتبه رسالة الخطاء قادمة

End Sub
أذا صادفك هذا الخطاء ما عليك سوى ان تضغط زر Ok من رسالة الخطاء و هو يرشدك الى الخطاء من خلل تضليله
نصائح : هذه الاخطاء تكثر عند كتابة الخصائص او اسند قيمة الى الخاصية لذا استفاد من مربع السرد الخصائص الذي يظهر عند كتابة
الخاصية تأكد من الكود جيدا و تأنى اما سمعت القول (( في التأني السلامة و في العجلة الندامة )) .
نصيح خارج اطار البرمجة : عندما تجلس امام الحاسوب حول تفريغ ذهنك من اي امور متقلقة بالحياة ......... و لا تستمع الى اي موسيقى
تشتت انتباهك ان متيقظ للحداث التي تجري داخل الطار المسمى اطار البرمجة Window Code .
نرجع الى صلب الموضوع
2- الاخطاء وقت التشغيل Run Time Errors :
هذه الاخطاء كثيرة وهي التي تجزع منها من كثرتها تأكد ان المبرمج الذي يتوقع حصول خلل او خطاء في البرنامج هو المبرمج الواعي الذي
يحلل ويكشف الاخطاء بس تابع معي الدرس و ترى بنفسك .
هناك تقني ان صح التعبير في فيجول بيسك هذه التقنية تمكن من اكتشاف مكان العلة التي تظهر في هاكذا نوع من الاخطاء تسمى الـ debugger
القائمة debug توجد عدة من الخيارات التي تساعدك في هذا المهمة ان لم تكفي هذه القائمة يمكن ان ان تقوم بتشغيل البرنامج و اذا حصل اي خطأ
قم بالضغط على زر Debug من الرسالة التي تظهر .
أما اذا ششكت في كود (( و الله اعلم )) حاول ان تضع نقطة توقف في مكان الشك Break Point هذه و ظيفتها توقيف البرنامج عند النقطة الموضوعة
اما الان انتقال الى برنامج بيسط اوضح من خلله الاخطاء الشائعه التي تحدث في البرامج الكبيرة
هذا البرنامج عبارة عن متصفح الملفات بني من خلل عدة ادوات منها DriveBox , DirBox , filebox
عندما تفتح البرنامج من خلل فيجول ترى بضع سطور نبدأها من DriveBox
عندما تغير السواقه القرص الصلب او اليزري ترى انا صندوق المجلدات قد تغير طبقأ للقرص المختار و عندما تحاول ان تغير صندوق السواقات الى قرص المرن غير موجود
او قرص ليزري لم يوضع فية قرص ترى رسالة تشير الى خطأ .
اذا كيف علم البرنامج ان هناك خطأ و اخبرك من خلل رسالة .
افتح الشفير (( الكو د البرمجي لفيجول بيسك ))و اذهب الى الحدث Change للاداة Drive1 ستشاهد مايلي :

كود:



Private Sub Drive1_Change()

On Error Goto M:

Dir1.Path = Drive1.Drive

Exit Sub

M:

msgbox "Error"

Drive1.Drive = Dir1.path

End Sub
أعداد الفخ :الجملة On Error
يتيح لك فيجول بيسك اعداد الخطأ (( الفخ )) من خلل الجملة On Error في مكان الارتياب و هي تحتوي على نوعين من تركيبات :

كود:



On Error Goto NameError :

And

ON Error Resume Next
________________________
شرح الخطأ الاكثر شيوعأ في فيجول بيسك Run Time Error
هل صادفك احدى الاخطاء التالية :
مشكلة الطابعة ---- لا تحتوي على اوراق فظهرت رسالة خطأ في فيجول او لا تعمل الطابعة
مشكلة القرص ------ لا يحتوي على قرص او باب غير مغلقة او القرص المرن غير مهيأ
مشكلة نفاذ ذاكرة ----- لا توجد مساحة كافة للتطبيقات
هناك مشاكل اخرى Run Time Errors مثال Overflow و Type Mismatch هذا النوع لا يمكن معالجة
بأعداد الفخ من خلل الجملة ON Error (( في الحقيقة يمكن لكن دعنا نأجلة لان ))
نرجع الى جملة On Error و كما قالنا في الدرس السابق هذه على نوعين :

كود:



On Error Goto Label

On Error Resume Next
و Label أسم معالج الاخطاء
تتيح لك الجملة الأولى On Error Goto Label أصطياد الخطأ و معالجة لأحق في مكان و يفضل ان يكون
في اخر الاجراء .
دعنا نعالج خطأ القرص المرنة (( A )) --- (( رغم ان الكثيرين لا يستعملة الأن لكن انا ملزم بشرحة حتى تتوضح
الصورة )) أذا لم يستعملة احد تواجه مشكلة و احدة معة هي لا يوجد قرص او لا يوجد محرك اقراص مرنة
الاخطاء التي تواجهها هي :
القرص غير موجود
الكائن Err يتيح لك التعرف على الخطأ و معالجتة :

كود:



On Error Resume Next

Dir1.Path = Drive1.Drive

If Err.Number = 68 Then ' لحظ رقم الخطأ من خلل الكائن

MsgBox "القرص غير موجود ادخل القرص رجاءا"

Drive1.Drive = Dir1.Path

End If
استعمل هذا الكود في جميع Drive الذي لا تحتوي على قرص
أما تهيأة القرص الكود التالي يعطيك فكرة :

كود:



On Error Resume Next

Dir1.Path = Drive1.Drive

If Err.Number = 71 Then

MsgBox "القرص غير مهيأ عليك تهيأة القرص "

Resume Next

End If
حان الوقت لجملة Resume و Reusme Next :
الجملة Resume تعيدك الى مكان حصول الخطأ و تكررة ثانية اما الجملة
Resume Next تقفز الى الجملة التي بعد الجملة تسببت بالخطأ .
أما مشكلة نفاذ الذاكرة توجد فقط في البرامج الضخمة ....
مرة ثانية الكائن Err الخاصية Description تعطيك فكرة عن الخطأ الذي حصل (( تصف لك الخطأ حرفيا ))
اما الخاصية Source فهية تنقلك الى اصل الخطأ (( أي البرنامج الذي تسبب بالخطأ ))
__________________________________________________ _______________________
في البداية هناك خطاءان ترافق المتغيرات
Overflow : نفاذ مساحة المتغير
Type Mismatch : خطأ في كتابة نوع المتغير .
قم بأرفاق مثل ارجو مراجعته
الكود التالي يعالج مشكلة الادخال من قبل المستخدم و اذا حصل خطأ يبدأ معالج الاخطاء بالعمل :

كود:



On Error GoTo m

Dim iNumber As Integer

iNumber = TextNumber.Text

Exit Sub

m:

MsgBox (" خطأ لا يمكن الكتابة غير الارقام")

TextNumber.Text = ""
هذا الكود صحيح 100% لكن لا ارجو منه المرونة مع الاخطأ اذا يظهر خطأ عندما يكون صندوق النص فارغ او او .......
على كل حال انا شخصيا افضل استخدام الكائن Err استخدام الـ Number معه و التفرع Select Case :

كود:



Private Sub CmdInteger_Click()

On Error Resume Next

Dim iNumber As Integer

iNumber = TextNumber.Text

Select Case Err.Number

Case 6

MsgBox "الرقم كبير اكبر من المتغير المدعوم انظر الكود "

Case 13

MsgBox " المدخل ليس رقم صحيح ادخل رقم صحيح "

End Select

End Sub
الخطأ نفاذ المساحة المتغير Overflow الرقم الذي يخزن في الخاصية Number هو 6 (( نفسة Overflow ))
اما خطأ الثاني هو Type Mismatch الرقم الذي يخزن في الخاصية هو 13 (( اي نفسة Type Mismatch ))
و يمكن على اساس ذلك التفرع مع الخطأ في العبارة Select Case ملاحقتة حتي القضاء علية
اما اذا الخاصية Number اصبحت تساوي صفر 0 يعني لا يوجد خطأ

كود:



On Error Resume Next

Dim iNumber As Single

iNumber = TextStr.Text

Select Case Err.Number

Case 0

MsgBox "لا يوجد خطأ يمكن اجراع العملية لان على المتغير "

Case 6

MsgBox "الرقم كبير اكبر من المتغير المدعوم انظر الكود "

Case 13

MsgBox " المدخل ليس ارقام ذات فاصلة عائمة يجب عليك ادخال ارقام ذات عائمة"

End Select



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



عدد الرسائل : 8
تاريخ التسجيل : 25/11/2007

الا خطاء البرمحيه Empty
مُساهمةموضوع: رد: الا خطاء البرمحيه   الا خطاء البرمحيه Emptyالجمعة أبريل 18, 2008 5:31 pm

جزاك الله خيراً
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
الا خطاء البرمحيه
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

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