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

تفادي أخطاء وقت العمل

بدأه عباس(أ) في 20 يوليو 2012 · 2 رد · 487 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كل عام وأنتم بخير

عندما نريد أن نتفادي خطأ ما نضعه في جملة if هكذا

if (!RegisterClassEx (&wincl))
        return 0;

لكن كيف أتفادي خطأ داخل شرط داخل شرط آخر مثل:

if(x == 1)
        {
             statment
        }

أنا في المثال السابق أشك في احتمال خطأ في الجملة statment

فماذا أفعل لقد فكرت في هذا الحل

if(x == 1)
        {
             if( !statment())
             {
               MessageBox(NULL, "fail", "fail", MB_OK);
              } 
               else
               {
               MessageBox(NULL, "succeed", "succeed", MB_OK);           
    }     
        }

لكن الحل السابق يوجد به مشكلة ماذا إذا كان الكود كبير و يتكون من عدة سطور بينما شرط if يتكون من سطر واحد

أنا أيضا فكرت ووجدت حلا لكن لست متأكدا منه وهو أن أضع أوامري في دالة ثم أضع الدالة في شرط if وهكذا أضمن تنفيذ التحقق من الشرط :-

if(x == 1)
	{
             if(!functoin())
             {
               MessageBox(NULL, "fail", "fail", MB_OK);
}
			 else
               {
               MessageBox(NULL, "succeed", "succeed", MB_OK);

           }
	}

	void functoin()
	{
		/* السطر الأول
		السطر الثاني
		الثالث الرابع */
	}

لكني لست متأكدا من هذا السطر

if(!functoin())

أنا آسف علي هذا السؤال الطويل لكنه مهم لتفادي الأخطاء

لكن هذا السؤال الذي يبدو صعبا ما هو إلا خوارزمية بسيطة بالنسبة لخبراء منتدانا :lol:

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

تم تعديل هذه المشاركة بواسطة عباس(أ) في 20 يوليو 2012 في 09:55

#2

السلام عليكم

)بينما شرط if يتكون من سطر واحد(

اخي الشرط لا يتكون من شرط واحد يمكنك وضع عدة شروط باستعمال && or and || <= >= < > != ==

متال

int x=10,k=20;
if(k==20 && x<=20)
{
printf("yyyyyy")
}
...
#3

انت لم تجعل الدالة تعيد شيئ فكيف يمكن للشرط ان يعرف إذا كانت الشرط محقق او لا من لا شيئ

إجعل الدالة على الشكل التالي

bool functoin()
{
//مثلا هذه الدالة تقوم بملا الصنف//wndclassex
//وحفظه بالدالة 
//registerclassex
WNDCLASSEX wce1,wce2;
wce1.size = ....
....................
.................
wce2.size = ...
......
if(!(RegisterClassEx(&wce1) && RegisterClassEx(&wce2)))
{
   return FALSE;
}
return TRUE;
}

اما إذا كانت الدالة تعيد قيمة اكبر من bool مثل HWND

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

HWND hwnd = 0;
(if(!(FALSE or 0 or hwnd)
messsagebox.....

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