المـهاجر
29-10-2014, 11:34 AM
السلام عليكم ورحمة الله وبركاته
الجزء الأول
درسنا اليوم سيكون عن رسائل الأخطاء
أداة هامة تتيحها الأوتوبلاى ليتعرف المبرمج على مكان الخطأ
لكنها تصبح كارثة عندما تظهر للمستخدم أثناء عمل البرنامج
فقد تبوح له بأدق أسرار البرنامج خصوصا لو كان تجارى
فمثلا أنت لا تحب أن يظهر لمستخدم برنامجك رسالة تخبره بشيئ كالآتى :-
فى السطر رقم كذا لم يتمكن البرنامج من الحصول على سيريال قرصك الصلب ليقارنه مع كذا فى السطر كذا
كذلك يمكن للمخترق تتبع الرسالة بمنقح و معرفة مكان سطر الحماية من بين عشرات الآلاف من الأسطر بكل سهولة
و تكون بذلك كأنك قد أهديت اللص مفتاح منزلك ليدخله بكل سهولة
كيف نتعامل بشكل آمن و نتجنب هذا المأزق ؟؟
هناك حلان
1-الحل التقليدى::
توقع جميع الأخطاء و تجهيز رسالة خاصة لكل إجراء (قد تنسي توقع أحد الأخطاء)
2- الحل الغير تقليدى::
عمل دالة عامة تتعامل مع اى خطأ مهما كان سببه و تظهر رسالة موحدة تكتبها بنفسك
انتهى الجزء الأول
الجزء الثانى
سنبدأ بمسالة بسيطة جدا
x = "almohager"
Dialog.Message("Notice", x);
ما نتيجة هذا الكود ؟؟
رسالة بها نص سابق التعيين فى المتغير إكس
جميل
ما نتيجة هذا الكود
y = "almohager"
Dialog.Message("Notice", x);
طبعا ستكون رسالة خطأ
لآن المتغير x لم يتم تعيينه
سؤال الحلقة
كيف نضع كود يجعل البرنامج يعطى رسالة خطأ معينة
و من دالة أخرى من خارج الكود
و نقل دفة التحكم إلى منطقة بعيدة عن مكان تنفيذ الكود
على أن يكون نظاما عاما و لا يعتمد على نوع و طبيعة الخطأ
و يمكن إستخدامه فى أى إجراء من البرنامج ليعطى رسالة "حدث خطأ راجع إجراءك الأخير" مثلا
نهاية الجزء الثانى
الجزء الثالث
يبدو ان عدم التفاعل يرجع لعدم وضوح الموضوع
حسنا سننحرف قليلا عن الموضوع و سنرجع لاحقا
س:: كيف تعطينا اللوا رسالة الخطأ ؟؟
:: هل يمكننا مقاطعة رسالة خطأ صدرت من اللوا (محرك الأوتوبلاى) و إستبدالها ؟؟
:: هل الرسائل التى تعطينا اياها الأوتوبلاى هى من محرك اللوا أم أنها قد أمليت على اللوا قسرا بواسطة الأوتوبلاى من خلال جدول أخطاء أعدته مسبقا شركة إنديجوروز ؟؟
::هل يمكننا إنتهاج نفس الأسلوب و إنتاج رسائل مشابهة بنفس التكتيك ؟؟
حسنا
سرعان ما سنعرف ذلك من هذا المثال
سنضع هذا الكود فقط فى زر و ننفذه
error ("Yes we can add ouer error messages")
http://im87.gulfup.com/fC1SNc.jpg
الأن السؤال ::
::بم تخبرنا هذه الرسالة و ما هو الخطأ الذى حدث ؟؟
::هل حدث خطأ فعلا أم أننا أجبرنا اللوا على الشعور بخطأ ؟؟؟
::هل ما شاهدناه هو الشكل الطبيعى للرسائل ؟؟
::هل كانت Dialog.Message أم Debug.Meassage ؟؟؟؟
::هل عرفتم نوعية الرسائل التى نحن بصدد منعها ؟؟؟
::هل أصبح موضوع الدرس واضح ؟؟
::هل أكمل ؟؟
نهاية الجزء الثالث
الجزء الأخير
السلام عليكم مجددا
تمهيد
يعتقد الكثيرون أننا نحن العرب لا نعرف سوى النقل من الغير
لذلك يفترضون انهم سيشاهدون شيئا سبق طرحه فى منتدى الشركة المنتجة إنديجوروز
او يفترضون أنهم يعلمون ما سوف يكتب إستنادا على الظن السابق توضيحه
و نسوا تماما أننا نحن العرب كنا منارة العلم بينما كان العالم يغط فى ظلام الجهل
أقول لهم
إعتقادكم خاطئ 100 %
و علينا من الأن فصاعدا أن نثق بأنفسنا و لا نشكك بقدراتنا
نأتى للفائدة
أقصد نأتى للكود
نضع فى الجلوبال
function err()
Dialog.Message("Notice", "حدث خطأ راجع إجراءك الأخير", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
طبعا محتوى الرسالة المكتوب بالأزرق إختيارى و ستكتبه على هواك
نضع فى الزر
function mohager()
y = "almohager"
Dialog.Message("Notice", x);
end
xpcall (mohager, err)
بداية نحن حولنا الكود لدالة
و لمن لا يعرف
فالمكتوب بالأزرق هو الدالة و إسمها
الدالة و إسمها إختيارى و ستغيره حسب أكوادك (كل ماهو بالأزرق إختيارى)
هكذا لن تظهر سوى رسالة الخطأ "حدث خطأ راجع إجراءك الأخير"
مهما كان نوع الخطأ
للتأكد
جرب أكواد مختلفة بأطوال مختلفة و بنوعيات أخطاء مختلفة
من كان سيصدق أن ستة أسطر فقط زائدة عن الكود
قد حجبت ظهور أى أخطاء للمستخدم
و أظهرت رسالة واحدة يمكننا كتابة محتواها مسبقا كما يحلو لنا
هل كان ما سبق معقدا ؟؟
ان كان كذلك أعطيتكم بليجن من برمجتى تكتب فيه إسم الدالة و محتوى رسالة الخطأ فيقوم بكل المطلوب
تم بحمد الله
شكرا لكل من ساهم أيا كانت مساهمته
و تحية خاصة للأستاذ [you]
أترككم فى حفظ الله
الجزء الأول
درسنا اليوم سيكون عن رسائل الأخطاء
أداة هامة تتيحها الأوتوبلاى ليتعرف المبرمج على مكان الخطأ
لكنها تصبح كارثة عندما تظهر للمستخدم أثناء عمل البرنامج
فقد تبوح له بأدق أسرار البرنامج خصوصا لو كان تجارى
فمثلا أنت لا تحب أن يظهر لمستخدم برنامجك رسالة تخبره بشيئ كالآتى :-
فى السطر رقم كذا لم يتمكن البرنامج من الحصول على سيريال قرصك الصلب ليقارنه مع كذا فى السطر كذا
كذلك يمكن للمخترق تتبع الرسالة بمنقح و معرفة مكان سطر الحماية من بين عشرات الآلاف من الأسطر بكل سهولة
و تكون بذلك كأنك قد أهديت اللص مفتاح منزلك ليدخله بكل سهولة
كيف نتعامل بشكل آمن و نتجنب هذا المأزق ؟؟
هناك حلان
1-الحل التقليدى::
توقع جميع الأخطاء و تجهيز رسالة خاصة لكل إجراء (قد تنسي توقع أحد الأخطاء)
2- الحل الغير تقليدى::
عمل دالة عامة تتعامل مع اى خطأ مهما كان سببه و تظهر رسالة موحدة تكتبها بنفسك
انتهى الجزء الأول
الجزء الثانى
سنبدأ بمسالة بسيطة جدا
x = "almohager"
Dialog.Message("Notice", x);
ما نتيجة هذا الكود ؟؟
رسالة بها نص سابق التعيين فى المتغير إكس
جميل
ما نتيجة هذا الكود
y = "almohager"
Dialog.Message("Notice", x);
طبعا ستكون رسالة خطأ
لآن المتغير x لم يتم تعيينه
سؤال الحلقة
كيف نضع كود يجعل البرنامج يعطى رسالة خطأ معينة
و من دالة أخرى من خارج الكود
و نقل دفة التحكم إلى منطقة بعيدة عن مكان تنفيذ الكود
على أن يكون نظاما عاما و لا يعتمد على نوع و طبيعة الخطأ
و يمكن إستخدامه فى أى إجراء من البرنامج ليعطى رسالة "حدث خطأ راجع إجراءك الأخير" مثلا
نهاية الجزء الثانى
الجزء الثالث
يبدو ان عدم التفاعل يرجع لعدم وضوح الموضوع
حسنا سننحرف قليلا عن الموضوع و سنرجع لاحقا
س:: كيف تعطينا اللوا رسالة الخطأ ؟؟
:: هل يمكننا مقاطعة رسالة خطأ صدرت من اللوا (محرك الأوتوبلاى) و إستبدالها ؟؟
:: هل الرسائل التى تعطينا اياها الأوتوبلاى هى من محرك اللوا أم أنها قد أمليت على اللوا قسرا بواسطة الأوتوبلاى من خلال جدول أخطاء أعدته مسبقا شركة إنديجوروز ؟؟
::هل يمكننا إنتهاج نفس الأسلوب و إنتاج رسائل مشابهة بنفس التكتيك ؟؟
حسنا
سرعان ما سنعرف ذلك من هذا المثال
سنضع هذا الكود فقط فى زر و ننفذه
error ("Yes we can add ouer error messages")
http://im87.gulfup.com/fC1SNc.jpg
الأن السؤال ::
::بم تخبرنا هذه الرسالة و ما هو الخطأ الذى حدث ؟؟
::هل حدث خطأ فعلا أم أننا أجبرنا اللوا على الشعور بخطأ ؟؟؟
::هل ما شاهدناه هو الشكل الطبيعى للرسائل ؟؟
::هل كانت Dialog.Message أم Debug.Meassage ؟؟؟؟
::هل عرفتم نوعية الرسائل التى نحن بصدد منعها ؟؟؟
::هل أصبح موضوع الدرس واضح ؟؟
::هل أكمل ؟؟
نهاية الجزء الثالث
الجزء الأخير
السلام عليكم مجددا
تمهيد
يعتقد الكثيرون أننا نحن العرب لا نعرف سوى النقل من الغير
لذلك يفترضون انهم سيشاهدون شيئا سبق طرحه فى منتدى الشركة المنتجة إنديجوروز
او يفترضون أنهم يعلمون ما سوف يكتب إستنادا على الظن السابق توضيحه
و نسوا تماما أننا نحن العرب كنا منارة العلم بينما كان العالم يغط فى ظلام الجهل
أقول لهم
إعتقادكم خاطئ 100 %
و علينا من الأن فصاعدا أن نثق بأنفسنا و لا نشكك بقدراتنا
نأتى للفائدة
أقصد نأتى للكود
نضع فى الجلوبال
function err()
Dialog.Message("Notice", "حدث خطأ راجع إجراءك الأخير", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
طبعا محتوى الرسالة المكتوب بالأزرق إختيارى و ستكتبه على هواك
نضع فى الزر
function mohager()
y = "almohager"
Dialog.Message("Notice", x);
end
xpcall (mohager, err)
بداية نحن حولنا الكود لدالة
و لمن لا يعرف
فالمكتوب بالأزرق هو الدالة و إسمها
الدالة و إسمها إختيارى و ستغيره حسب أكوادك (كل ماهو بالأزرق إختيارى)
هكذا لن تظهر سوى رسالة الخطأ "حدث خطأ راجع إجراءك الأخير"
مهما كان نوع الخطأ
للتأكد
جرب أكواد مختلفة بأطوال مختلفة و بنوعيات أخطاء مختلفة
من كان سيصدق أن ستة أسطر فقط زائدة عن الكود
قد حجبت ظهور أى أخطاء للمستخدم
و أظهرت رسالة واحدة يمكننا كتابة محتواها مسبقا كما يحلو لنا
هل كان ما سبق معقدا ؟؟
ان كان كذلك أعطيتكم بليجن من برمجتى تكتب فيه إسم الدالة و محتوى رسالة الخطأ فيقوم بكل المطلوب
تم بحمد الله
شكرا لكل من ساهم أيا كانت مساهمته
و تحية خاصة للأستاذ [you]
أترككم فى حفظ الله