إشترك

حل مشكلة ظهور رسائل الخطأ في الدلفي




بسم الله الرحمان الرحيم .السلام عليكم و رحمة الله تعالى وبكاته في موضوع اليوم سنتعرف على طريقة حل مشكلة ظهور رسائل الخطأ هذه الرسائل تظهر أثناء تنفيذ البرنامج فإذا الكود غير صحيح فالبرنامج سيتوقف عن العمل و عليك أن تقوم بعملية compile  في كل مرة يحدث فيها الخطأ يمكن أن تظهر هذه الأخطاء على شكل رسائل أو توقف المترجم عن العمل لذلك سنقوم في هذال الموضوع بإضافة كود يسمح لك بعمل استثناء فإذا حدث خطء لن يتوقف البرنامج بل سيكمل و كأنك لم تضغط على الزر و للحل هذه المشكلة نحتاج إلى أن نفهم ما هي هذه الأخطاء
    1-      الأخطاء : هي وجود خل في الكود الذي كتبته و في الدلفي تسمى بالاعتراضات باللغة الإنجليزية Exceptions و هي تظهر على شكل رسالة خطأ لك و للمستخدم الذي سيحصل على البرنامج
    2-      معالجة الأخطاء : يتم هذا عن طريق جملة try…except
مثال 1 :برنامج يمكن ظهور رسالة الخطأ فيه
ابدأ مشروع جديد و أضف إله بعظ المكونات لكي يصبح هكذا :

الآن أكتب الكود التالي في حدث  الضغط على الزر

Begin
Edit3.text:=inttostr(strtoint(edit1.text)+strtoint(edit2.text));

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

انتباه : للعودة للمشروع الرئيسي يجب علك عمل compile   و هذا عن طريق project/ compile all projects
هذه الرسالة  تخبرك بأن القيمة المدخلة ar   ليست من نوع عدد صحيح و هذا الخطأ من نوع econverterror  الآن ستظهر للمستخدم رسالة خطأ أيضا يضغط على ok  و يواصل العمل بالبرنامج و لكن هذا يقلل من قيمة البرنامج
مثال 2 : برنامج بدون أخطاء
عليك إضافة الجملة try…except  كالتالي

Begin
try
Edit3.text:=inttostr(strtoint(edit1.text)+strtoint(edit2.text));
Except
Form1.caption:= 'write N°';
End;
End;

في هذال كود سيقوم البرنامج بتغير عنوان النموذج في حالة حدوث الخطأ و لكل ما يوجد ما بين try  و except  سيخضع للمعاينة و في حالة كان الخطأ الناتج موجود بين هاتين الكلمتين فإنه لن تظهر رسالة الخطأ بل يتغير عنوان النموذج فقط و لكن  ماذا إذا كان هناك أخطاء أخرى فكيف ستحل الخطأ الأمر سهل ما عليك إلى تحديد نوع الخطأ من الرسالة التي تظهر لك عندما تكون تعمل على مشروعك و تحاول التنفيذ و تغير الأمر السابق إلى :
مثال 2 : معالجة الأخطاء على حدى
ملاحظة : تستعمل هذه الطريقة في حالتين :
        ·         إذا كان الخطأ مثلا لا يتعلق بنوع القيمة التي أنتجت الخطأ ' نص/عدد صحيح....'    
        ·         إذا كانت الخطأ ليس سببه نوع القيمة و الرسالة ستكون بسبب نوع القيمة

Begin
try
Edit3.text:=inttostr(strtoint(edit1.text)+strtoint(edit2.text));
Except
on econverterror do form1.caption:='write n°';
End;
End;

حيث أننا في هذا الكود حددنا الخطأ و هو من نوع Econverterror و إذا كان من نوع أخر ما عليك إلى أن تكتبه و إذا كان هناك خاطئان  يمكنك كتابة أمران الأمر سهل ما عليك إلى أن تحدد الخطأ من الرسالة التي تظهر لك و توجد طرق أخرى نذكر منها
التعليمة try… Finally  : ما يميز هذه التعليمة عن سابقتها هو أنها تنفذ جميع الأوامر و نتعمق في هذا الموضوع في دروس قادمة إن شاء الله
و السلام عليكم و رحمة اله تعالى و بركاته


ليست هناك تعليقات

جميع الحقوق محفوظة لــ تعلم دلفي بالعربية 2015 ©