أرجو من أحد المحترفين أن يشرح تعليمات try و except بمثال بسيط اذا امكن
وشكرا
أرجو من أحد المحترفين أن يشرح تعليمات try و except بمثال بسيط اذا امكن
وشكرا
with Query1 Do
begin
Close;
SQL . Clear;
SQL . Add('insert Into Stock temDesc,ItemQty,ItemCost,ItemLoc,Reorder,HighLevel,LowLevel) Values('+QuotedStr(Edit1 . Text)+','+QuotedStr(Edit2 . Text));
SQL . Add(',0,0,'+QuotedStr(Edit3 . Text)+','+Edit4 . Text +','+Edit5 . Text);
SQL . Add(','+Edit6 . Text+')');
Try ExecSQL;
Except On EdbEngineError Do
Begin
ShowMessage('فشل عملية التخزين لوجود تكرار');
end;عندما نقوم بتخزين الحقل يوجد بها تكرار يقوم بأعلام بوجود خطأ والسبب هو تكرر الارقم
وهذا احد مميزات هذه try وهي تقوم بتعرض رسالة الخطأ الناتجة عن البرنامج
ارجو ان يكون شرحي مفهوم
والله اعلم
وسوف اقوم بأرفاق المثال فيما بعد
..................بسم الله الرحمن الرحيم..................
وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان
.............................................................................................................................
سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال
التحكم بمنفذ الطابعة عن طريق الدلفي
سلسلة دروس تعلم قواعد بيانات Midas
أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي
كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة
مكتبه الأكواد, أكواد وبرامج دلفي
.............................................................................................................................

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:real;
begin
a:=0;
try
c:= b/a;
caption := floattostr(c);
except
ShowMessage('Error');
end;
end;كما تلاحظ القسمه على صفر ستسبب خطأ .
بترجمة الشفرة السابقة باستخدام دلفي سيحدث الخطأ أيضا , ولكن إذا عدت للملف التنفيذي النهائي , أو ألغيت تفعيل خيار المقاطعة عن الأخطاء من خصائص بيئة دلفي
ستجد أن البرنامج النهائي (exe) يتجاوب مع الخطأ بطريقتنا الخاصة , ويظهر رسالتنا نحن بدلا من رسالة النظام
كذلك يوجد try finally ,
والفرق أن
except : تتنفذ فقط عند حدوث خطأ
finally : تتنفذ مهما حدث حتى لو حدث خطأ . أي أنه في بعض الحالات عند حدوث خطأ ما يتم مقاطعة تنفيذ البرنامج من نقطة الخطأ , مما يسبب بعض المشاكل , مثلا عدم تحرير الذاكرة التي قمنا بحجزها , ولكن إذا استخدمنا try finally فإننا نضمن أن الذاكرة سيتم تحريرها حتى لو حدث أخطاء في تنفيذ بلوك برمجي ما
يمكن استخدام كذلك عبارة مركبه منهما :
try try except end; finally end;
من فوائد try كذلك هي إلغاء بعض رسائل الخطأ التي لابد منها , وذلك بوضع except end من دون وضع أي شفره بينهما ,
مثلا لو وضعنا الشفرة السابقة من دون try بالشكل :
procedure TForm1.Button1Click(Sender: TObject); var a,b,c:real; begin a:=0; c:= b/a; caption := floattostr(c); end;
نلاحظ ظهور رسالة الخطأ الأجنبية حتى بالملف التنفيذي النهائي
ولكن لو وضعنا try و except end من دون وضع أي رسالة خطأ , عندها لن تظهر رسالة الخطا .. ويجب استخدام هذه التقنية بحكمه
procedure TForm1.Button1Click(Sender: TObject); var a,b,c:real; begin a:=0; try c:= b/a; caption := floattostr(c); except end; end;
تم تعديل هذه المشاركة بواسطة ORWA في 21 يوليو 2005 في 14:29
شكرا عالشرح المبسط يا أخي والله يعطيك العافية
هذا الموضوع مغلق.