@ الروح الخفية @ عضو ذهبي
عدد الرسائل : 191 العمر : 40 تاريخ التسجيل : 06/04/2009
| موضوع: آخطاء تنفيذ البرامج Run Time Error الإثنين أبريل 13, 2009 1:45 pm | |
| هناك أخطاء تحدث أثناء تنفيذ البرامج ينتج عنها ظهور رسالة Run Time Error . فما رأيك لو أننا تغلبنا على هذه الرسائل التابعة للفيجوال بيسك وجعلنا الرسائل التي تظهر عند حدوث خطأ ما مجرد رسائل تنبيهية للمستخدم ..
ومن أشهر طرق تلافي الأخطاء هو إستخدام الـ Labels (العناوين) في أثناء الكود البرمجي .
ولكي أضرب لك مثلاً على هذه الطريقة ، واتبع الخطوات التالية :
-1 قم بعمل مشروع جديد Standard Exe،
-2 ارسم زر امر وغير خاصية Caption إلى Copy.
-3انقر نقراً مزدوجاً على زر الأمر ، وأكتب الكود التالي :
Private Sub Command1_Click()
FileCopy "A:\App_Salaries.xls", "C:\App_Salaries.xls"
End Sub
-4 نفذ البرنامج F5، وأنقر زر Copy فتشاهد رسالة خطأ والتي تدل على عدم وجود قرص في Drive المسمى A، ولاحظ أن عنوان الرسالة هو Run Time Error والتي قد لا يفهم المستخدم مغزاها.
-5 عدَّل في الكود المكتوب ، وإجعله كما يلي:
Private Sub Command1_Click()
On Error GoTo Handle:
FileCopy "A:\App_Salaries.xls", "C:\App_Salaries.xls"
MsgBox ("U Copied The File Successfully")
Exit Sub
Handle:
MsgBox ("Check Your Floppy Drive. And Make sure that u have a disk in ur drive")
End Sub
ü لاحظ هنا أننا وضعنا السطر: On Error GoTo Handle، وذلك معناه أنه عند حدث خطأ في السطور التالية إذهب مباشرة إلى العنوان (Label) Handle وقم بتنفيذ الأوامر الموجودة أسفله .
ü ثم أعطينا أمر النسخ من القرص A إلى القرص الصلب C.
ü في السطر الثالث أظهرنا رسالة تحمل نجاح عملية النسخ وعدم حدوث أخطاء .
ü في السطر الرابع كان لزاماً علينا أن نخرج من البرنامج بعد إنتهاء عملية النسخ وحتى لا ينفذ باقي الأوامر الأخرى، لذا وضعنا أمر Exit Sub..
ü في السطر الخامس أعطينا أسم العنوان المرادالقفز إليه عند حدوث خطأ وهو Handle:
ü في السطر السادس وضعنا رسالة خطأ توضح أنه تمة خطأ في القرص A إما في ال Drive نفسه أو أن القرص المرن غير موجود - < والسؤال الآن هو : هل هذه هي الطريقة الوحيدة لتفادي الأخطاء الخاصة بالتشغيل؟
> والإجابة: بالطبع لا ، فلابد أن يوجد لديك البدائل دائماً لتختار أفضلها بالنسبة للبرنامج ولك أيضاً .
يتبع===> | |
|
abduljabbar Administration
عدد الرسائل : 866 العمر : 44 تاريخ التسجيل : 07/12/2008
| موضوع: موضوع حلو الثلاثاء أبريل 14, 2009 8:07 pm | |
| موضوع مفيد لمن يبرمجون بلغة الفيجول بيسك يعطيك العافيه اخوي
| |
|
abduljabbar Administration
عدد الرسائل : 866 العمر : 44 تاريخ التسجيل : 07/12/2008
| موضوع: موضوع حلو الثلاثاء أبريل 14, 2009 8:08 pm | |
| موضوع مفيد لمن يبرمجون بلغة الفيجول بيسك يعطيك العافيه اخوي
| |
|
@ الروح الخفية @ عضو ذهبي
عدد الرسائل : 191 العمر : 40 تاريخ التسجيل : 06/04/2009
| موضوع: رد: آخطاء تنفيذ البرامج Run Time Error الجمعة أبريل 17, 2009 4:27 am | |
| تابع ====>
تعال معنا لنقوم بالتعديل في المثال السابق كما يلي :
1- انقر نقراً مزدوجاً على زر الأمر ، وادخل للكود السابق وعدل به حتى يصبح كما يلي :
Private Sub Command1_Click ()
On Error Resume Next
FileCopy "A:\App_Salaries.xls", "C:\App_Salaries.xls"
MsgBox ("U Copied The File Successfully")
End Sub
2- نفذ البرنامج F5، وتأكد أن القرص المرن ليس موجوداً .
3- أنقر على زر الأمر ، ولاحظ ظهور رسالة تأكيد النسخ على الرغم من عدم وجود القرص المصدر الذي نقوم بالنسخ، منه ، تسأل الآن كيف ذلك ؟!
الإجابة ببساطة: أننا قمنا بوضع السطر On Error Resume Next وذلك معناه أنه في حالة وجود سطر أوامر خاطئ فاقفز إلى السطر التالي ونفذه ، وهذا هو ما جعل البرنامج ينفذ سطر أمر إظهار مربع الرسالة بعدما وجد أن السطر السابق به خطأ .
لعلنا قد بسطنا لك أمر اصطياد الأخطاء وتلافيها ... وكما ترى عزيزي القارئ أن اوامر لغة الفيجوال بيسيك بسيطة لدرجة قربها من المعنى اللغوي .
ما رأيك الآن لو قدمنا لك وجبة شهية وهي كيفية إنشاء ملف نص من داخل الفيجوال بيسيك، تعال معنا الآن واتبع الخطوات التالية :
1- قم بعمل مشروع جديد (Standard exe).
2- قم بعمل زر أمر وأجعل خاصية Caption له Create Text File. 3- افتح قائمة...Project \ Components ، واختر Microsoft SysInfo Control 6.0 وهو ال Controlالمختص بالعمل على الملفات.
4- بعد ظهور هذا ال Control، قم برسمه على سطح النموذج
5- أنقر الآن نقراً مزدوجاً على زر الأمر ، لفتح نافذة كتابة الكود ، وأكتب الكود التالي : Private Sub Command1_Click() Dim fs, f Set fs =CreateObjec ("Scripting.Filesysteminfo") Set f = fs.createtextfile("c:\Ahmed.txt") f.write "Welcome" f.Close MsgBox ("U Created The Text file Successfully...") End Sub
ü وقد قمنا بتعريف متغيرين هما FS,F وهما من نفس النوع Variant.
ü في السطر التالي جعلنا المتغير FS مساوياً للأمر CreateObject وهو المسئول عن إعلام البرنامج بأننا سنقوم بتخليق كائن (لم يتم تحديد نوعه حتى الآن) .
ü في السطر الثالث جعلنا قيمة المتغير F مساوية لقيمة تخليق الكائن FS.. وتحديد نوع هذا الكائن أنه سيكون ملفاً نصياً على ال Drive المسمى C لذا كتبنا السطر
Set f = fs.createtextfile("c:\Ahmed.txt")
ü وحتى لا يكون هذا الملف النصي فارغاً كتبنا بداخله كلمة Welcome عن طريق إستدعاء المتغير F الذي يحمل أسم الملف النصي ومساره ووضعنا Write كأمر للكتابة ، ثم وضعنا بعد ذلك ما نريد كتابته بداخل علامتي تنصيص.
ü وكما قمنا بتخليق ملف نصي وفتحناه وكتبنا بداخله، كان لزاماً علينا إغلاق هذا الملف بعد الإنتهاء من العمل عليه لذلك كتبنا الأمر F.Close.
ü وأخيراً وضعنا رسالة تنبيهية للمستخدم أن كل شئ سار كما يريد وتم تخليق الملف وتمت الكتابة بداخله بنجاح .
ü نفذ الآن برنامجك F5 واستمتع بملفك النصي الذي انشائه .
يالروعة العمل على الفيجوال بيسيك إنه لم يترك شيئاً إلا وتعامل معه حتى الملفات الخارجية (حذف - إنشاء - ....ألخ) وقد قمنا في عدد سابق بشرح نسخ وحذف الملفات الموجودة على جهازك من داخل الفيجوال بيسيك .
ولكن هل هذه الطريقة هي الوحيدة لإنشاء الملفات والكتابة بداخلها ؟ الإجابة هي لا، ويوجد طرق أخرى من ضمنها ما يسمى بال Sequential File، ونعدك عزيزي القارئ بالتطرق لهذه الطريقة أيضاً في عدد قادم بإذن الله .
| |
|
@ الروح الخفية @ عضو ذهبي
عدد الرسائل : 191 العمر : 40 تاريخ التسجيل : 06/04/2009
| موضوع: رد: آخطاء تنفيذ البرامج Run Time Error الجمعة أبريل 17, 2009 4:36 am | |
| تابع ====>
التعامل مع الطابعة :-
ما رأيك الآن لو أننا طبعنا محتويات مربع نص على الطابعة مع التحكم في تأثيرات الخطوط (الحجم - الشكل -...)؟! ، تعال الآن واتبع الخطوات التالية :
1- قم بعمل مشروع جديد Standard Exe.
2- ارسم مربع نص ، وامح كلمة Text1 الموجودة بداخله من خاصية Text..
3- ارسم مربع عنوان واجعل خاصية Caption
4- ارسم زر أمر واجعل خاصية Caption
5- انقر نقراً مزدوجاً على زر الأمر ، وأكتب الكود التالي : Private Sub Command1_Click() Printer.FontName = "Arial" Printer.FontBold = True Printer.FontSize = 14 Printer.Print Text1.Text MsgBox ("U printed the text...") End Sub
6- نفذ الآن البرنامج F5 وأكتب النص الذي تريده بداخل مربع النص ، ثم انقر زر Print Text
* في السطر الأول عينا أسم الخط المراد طباعته عن طريق خاصية FontName وجعلناها مساوية لأسم الخط المطلوب الطباعة به .
* في السطر الثاني عينا الخاصية FontBold لأمر الطباعة وجعلناها مساوية True لإخراج النص سميك من الطابعة.
* ثم تحكمنا في حجم الخط المراد إخراجه عن طريق الخاصية FontSize وجعلناها مساوية 14 (حجم الخط).
* والآن بعد تهيئة النص جاء دور الطباعة عن طريق خاصية Printوأتبعناها بالنص المراد طباعته وهو محتوى مربع النص .
* ثم أظهرنا رسالة للمستخدم تفيده بنجاح وانتهاء الطباعة للنص المكتوب .
طباعة النماذج :-
< ماذا لو أراد المستخدم طباعة نموذج... هل يمكن للفيجوال بيسيك أن يقدم له الحل؟
> نعم بكل تأكيد... والأمر في غاية السهولة واليسر والدليل على ذلك هو الآتي :
1- عد لتصميم النموذج في المثال السابق .
2- أضف زر أمر وأجعل خاصية Caption له Print Form
3- انقر نقراً مزدوجاً على زر الأمر Print Form.
4- أكتب الكود التالي : Private Sub Command2_Click() orm1.PrintForm End Sub
5- نفذ الآن البرنامج F5، وأنقر زر Print Form.
* ألم أخبرك بأن الأمر في غاية السهولة واليسر فكل ما قمنا بعمله هو كتابة أسم ال Formالمراد طباعته ثم عينا له الخاصية PrintForm المسئولة عن طباعة النموذج السابق ذكره .
وبما أننا في مجال شرح عمليات الطباعة ..قد يتساءل البعض عن كيفية طباعة البرنامج (الكود والتصميم) وذلك للإحتفاظ به والعودة إليه وقت الحاجة ، وتعد هذه العملية من العمليات الهامة جداَ في البرمجة وهي إحدى وسائل توثيق البرنامج Documentation والغرض من عملية التوثيق هو الإحتفاظ بمرجع دائم للبرنامج يفيدنا في المستقبل في التعديل بالبرنامج أو تحديثه أو أي ما كان سيجرى على البرنامج ، ولكي نقوم بطباعة الكود والتصميم ، اتبع معنا الخطوات التالية :
1- من تصميم المثال السابق افتح قائمة File\Print.
2- يظهر معك المربع الحواري الخاص بالطباعة -
3- يظهر لك الآن المدى الذي ترغب في طباعته وهو ينقسم إلى :
أ - Selection وذلك في الرغبة في طباعة جزء معين من أجزاء الكود تم تحديده من نافذة كتابة الكود .
ب - Current Module لطباعة الكود الخاص بالنموذج الذي نعمل عليه بالكامل .
ج - Current Projectلطباعة المشروع بالكامل.
4- أما الجزء الآخر فيسألك عما تريد طباعته وينقسم إلى :
أ - Form Imageوهو خاص بطباعة تصميم النموذج.
ب - Code لطباعة الكود البرمجي للتصميم .
ج - Form As textوذلك لطباعة النموذج في شكل نصي .
5- اختر ماشئت من اختيارات ثم انقر زر Ok، ننصح دائماً بطباعة التصميم والكود معاً حتى تستطيع دائماً الربط بينهما في أي وقت.
الرسم والحركة :-
في أغلب الأحوال يتطلب برنامجك بعض التحسينات في شكل البرنامج وذلك بوضع رسوم أو تأثيرات الحركة Animation، فما رأيك أن نتعلم سوياً كيف نرسم دائرة عن طريق الكود بدلاً من رسمها من مربع أدوات التحكم ، أتبع الخطوات البسيطة التالية :
1- افتح مشروعاً جديداً Standard Exe.
2- انقر نقراً مزدوجاً على سطح النموذج لفتح نافذة الكود البرمجي، وأكتب الكود التالي : Private Sub Form_Load() Form1.Circle (2400, 1200), 900 End Sub
3- قم بتنفيذ البرنامج F5، وشاهد الدائرة الموجودة على سطح النموذج
* لكي نفهم كيفية العمل في المثال السابق، لابد أن نعلم أن أي دائرة لها مركز ونصف قطر، وبما أننا نتعامل مع إحداثيات النموذج فإن المركز يتحدد بنقطتي طول وعرض ، وهذا ما عرضناه في المثال السابق (2400,1200)، أما نصف القطر فهو لتحديد حجم الدائرة وتم تحديده في المثال السابق (900) .
تعال الآن لنرسم مجموعة من الدوائر تظهر عند بداية تحميل النموذج :
1- افتح مشروع جديد Standard Exe.
2- أنقر نقراً مزدوجاً على سطح النموذج لفتح نافذة الكود البرمجي ، وأكتب الكود التالي : Private Sub Form_Load() For i = 1 To 400 Circle (2400, 1200), 300 + i, QBColor(13) Next i End Sub
3- نفذ البرنامج F5، وشاهد مجموهة الدوائر المتتالية وعددها 400 دائرة -
* ولكي نقوم برسم 400 دائرة فليس من المعقول أن نعطي أمر رسم الدائرة 400 مرة في 400 سطر متتال ولكن دعنا نستخدم الإمكانيات التي شرحناها سابقاً التكرار- Looping.
* ففي السطر الأول حددنا عدد مرات التكرار ب 400 مره .
* وفي السطر الثاني وضعنا أمر رسم الدائرة مع تحديد المركز (2400,1200)، أما نصف القطر فسوف يتغير تبعاً لكل دائرة وسيكبر بمقدار 1 لذلك وضعنا قيمة ثابته لنصف القطر (300) ويكون نصف القطر للدائرة الأولى 300+1 (301)، والدائرة الثانية 300+2 (302)، والثالثة 303 ، وهكذا....
أعتقد عزيزي القارئ أن الأمر بسيط ، فما رأيك لو تقوم انت بتغيير القيم وتشاهد الفرق، أما أمر QBColor(13) فالمقصود به تحديد لون الدوائر المراد رسمها ، ويلاحظ أنه يمكنك استخدام الألوان عن طريق القيم من صفر إلى 15، حيث أن لدينا 16 لون أساسياً.
| |
|