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

أرجو المساعدة

مغلق
بدأه The Tornado في 6 مايو 2005 · 3 رد · 521 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أرجو المساعدة

في لافيجوال بيسيك توجد التعليمة on error do

لتجاوز توقف البرنامج في حال حصول خطأ

فهل لها مثيل في الدلفي

MAAAAAAAAAAAAAAAAAAAAAAAC

#2
try
//your code here
except
end;

إذا لم تضع شيء بين except و end سيتم تجاهل الأخطاء بالملف التنفيذي النهائي

, أو بإمكانك وضع رسالة من عندك بينهما (بالعربية مثلا)

#3

يملك ديلفي تعليمات وإجرائيات قوية وفاعلة في التقاط كل إستثناء غير وارد في عمل التطبيق.

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

هذه الصيغ هي ثلاث:

الصيغة الأولى : Try.. finally ..end;

try
   instruction1
finally
   instruction2
end;

في هذه الصيغة فأن instruction1 هي مجموعة من تعليمات الكود محمية وهي تلي Try, وعند حدوث أي استثناء OnException فإن الكود instruction2 الذي يأتي بعد Finally وفبل End; سينفذ حتما سواءا حدث الإستثناء أم لم يحدث.

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

ففي تعليمات كود finally سنقوم بتحرير الذاكرة التي حجزت لبعض المكونات كيفما كان الحال.

مثال :

function TForm2.OpenImage(ImgFile: TFileName): boolean;
var
 img: TImage;
begin
try
  img := TImage.Create(Form2);
  img.Parent:= Form2;
  img.Picture.LoadFromFile(ImgFile);
finally
  img.Free;
end;

الصيغة الثانية: Try...Except...end;

try
   instruction1
except
   instruction2
end;

سنعطي مثالا عن فائدة اتخدام هذه الصيغة من تسيير الإستثناءات:

لنعتبر أن المستخدم يجب أن يدخل في مربع للتحرير Edit1 عدد, سيقوم الكود بعدها بتحويله من سلسلة محرفية إلى عدد من صنف float.

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

حاول أن تقوم بإدخال قيمة غير صحيحة لا تعبر عن قيمة عددية, حينها ستستقبل رسالة إخبارية تعلمك عن طبيعة الإستثناء الذي حدث.

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

المثال:

procedure TForm2.Button1Click(Sender: TObject);
var
 strErr: string;
begin
try
  Nmbr:= StrToFloat(Edit1.Text);
          //StrToFloatconverts the given string to an reel value. If the string
          //doesn't contain a valid value, an EConvertError exception is raised. }

  // .... instruction to do

  Nmbr:= Pi / Nmbr;                 // number must be no zero else a exception
                                    //is rased: EZeroDivide
except
 on EConvertError do
              begin
                Edit1.Text:='0';
                strErr:= 'the ' + EConvertError.ClassName + ' has occured'+
                                #10 + 'Enter a valid Number Please'+
                                #10 + 'The Decimal Separator is: "' + DecimalSeparator+ '".';
                MessageBox(0,PChar(StrErr),
                                'EConvertError Exception',MB_OK + MB_ICONERROR);
              end;
 on EZeroDivide do  // DIVIDE_BY_ZERO
              begin
                Nmbr:= Pi;
                Edit1.Text:='1';
                strErr:= 'the ' + EZeroDivide.ClassName + ' has occured'+
                                #10 + 'The default value "1" is entred';
                MessageBox(0,PAnsiChar(StrErr),
                                'EZeroDivide Exception',MB_OK + MB_ICONEXCLAMATION);
              end;
end;
end;

الصيغة الثالثة : rase ExceptionObject at @fuction

وهي خلق أستثناء لكي يقوم النظام باستقباله وتحويله لدالة التطبيق التي ستحلله

مثال:

 if Nmbr <0 then
 raise EMathError.Create('Enter a positive value !!!') at @TForm2.Button1Click;

بالتوفيق في برمجة ديلفي :D

تم تعديل هذه المشاركة بواسطة ikossan في 6 مايو 2005 في 18:56

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#4

لقد سبقتني يا أخي :lol:

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

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

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