موصى به: فهم عميقًا للميزات السحرية لـ FSO في ASP في ASP ، تعني FSO كائن نظام الملفات ، وهو كائن نظام الملفات. يشير نظام ملفات الكمبيوتر الذي سنعالجه إلى وجوده على خادم الويب. لذلك ، تأكد من أن لديك الأذونات الصحيحة لهذا الغرض. من الناحية المثالية ، يمكنك استخدام جهازك الخاص
7.1.2 أخطاء الدلالية أو وقت التشغيلإن اكتشاف ومعالجة أخطاء بناء الجملة أمر مزعج ، لكنك ستواجه نوعًا آخر من الأخطاء الأخرى المثيرة في البرمجة - الأخطاء الدلالية أو أخطاء وقت التشغيل. يتم اكتشاف هذا النوع من الخطأ فقط عند تشغيل رمز نص أو برنامج آخر. بمعنى آخر ، تم تفسير أو تجميع التعليمات البرمجية الكاملة والافية من قبل المترجم أو المترجم ، وحدث خطأ أثناء التنفيذ. يشير تمريرة خطأ في وقت التشغيل إلى نتيجة الأخطاء الدلالية ، أي أن هذه الأخطاء موجودة في دلالات الكود وتصبح مرئية عند تشغيل الرمز.
يأتي هذا الاختلاف من حقيقة أن برنامج التحويل البرمجي أو مترجم البرنامج يجب أن ينشئ وصفًا للرمز الداخلي قبل التعامل مع رمز البرنامج ، والذي يتضمن تطابق بداية ونهاية هياكل متعددة للإشارة إلى ما يحتوي عليه كل هيكل ، ثم تحليل كل جملة من أجل معرفة كيفية تنفيذ الجملة. على سبيل المثال ، إذا كان هناك if ذلك ... آخر ... end If structure ، فإن الخطوة الأولى من المترجم أو التحويل البرمجي هي تحليل العبارات الموجودة في الجزء الذي تكون في الجزء الآخر. الغرض من هذه الخطوة هو تحديد الفرع الذي سيتم تنفيذه بعد اختبار الظروف IF في الهيكل.
الفرق الحقيقي بين برنامج التحويل البرمجي (مثل اللغات التي شوهدت في لغات البرمجة مثل Visual Basic و C) والمترجم المترجم (مثل المترجم المترجم اللغوي للبرمجة النصية مثل VBScript و JScript) هو أن المترجم لا يحاول تشغيل رمز البرنامج ، ولكن بعد المعالجة المسبقة للبرنامج المصدر ، يشكل تعليمات ثنائية أو رمز رمزي وملف File .DLL. لا يحتوي المترجم المترجم على ملف رمز ، ولكن يتم تنفيذه خطوة بخطوة في وقت التشغيل.
1. خطأ تسبب في توقف التشغيل
إذا كان البرنامج يحتوي على خطأ دلالي ، فيمكنك عادة الحصول على موجه في وقت التشغيل. إذا كنت محظوظًا ، فسيتوقف البرنامج عند حدوث خطأ ، بحيث يكون من السهل معرفة مكان الخطأ. على سبيل المثال ، يحدد البرنامج التالي مجموعة مع ستة عناصر.
<٪
الأخياء الخافتة (5) "لعقد ستة عناصر ، فهرسة من 0 إلى 5
atrvalues (6) = يصيح ، حصلت على خطأ
٪>
إذا حاولت قراءة أو تعيين قيمة العنصر مع العاطفة إلى 6 ، فيمكنك الحصول على خطأ في وقت التشغيل ، كما هو موضح في الشكل 7-7:
الشكل 7-7 نتيجة تنفيذ البرنامج 6
لاحظ أن نوع الخطأ هنا هو خطأ في وقت التشغيل (يعادل دلالات) ، وليس خطأ في بناء الجملة. تُظهر رسالة الخطأ عدد الصفوف التي يوجد بها الخطأ ووصف الخطأ ، مما يساعدنا في العثور على الخطأ المقابل بسهولة أكبر. ولكن هذا مثال بسيط ، في رمز البرنامج الأكثر تعقيدًا ، قد يحدث هذا الخطأ في بعض البرامج التي تعبر بعض القيم وإضافتها إلى صفيف. كما هو موضح أدناه:
<٪
قاتمة قاتمة (5) "لعقد ستة عناصر
بالنسبة إلى intloop = 0 إلى intlistcount 'عدد العناصر في بعض القائمة
revalues (inloop) = request.form (selectItems) (intlistcount)
التالي
٪>
في هذه الحالة ، من المحتمل أن تكون قد حصلت على الكثير من إدخالات القائمة ، أو أن فهرس الصفيف غير كافٍ. وفقًا لمتطلبات الكود ، يمكنك تحديد الخطأ الذي هو عليه ، ويمكنك حل هذا الخطأ عن طريق زيادة حجم الصفيف.
<٪
عاهرة الأخياء (10) "لعقد أحد عشر عنصرًا
بالنسبة إلى intloop = 0 إلى intlistcount 'عدد العناصر الباحث عن بعض القائمة
revalues (inloop) = request.form (selectItems) (intlistcount)
التالي
٪>
أو قم بتعيين معلمات الحلقة وفقًا لذلك لحل معالجة الأخطاء.
<٪
قاتمة قاتمة (5) "لعقد ستة عناصر
IntarrayMax = intlistCount
إذا intarraymax> 5 ثم intarraymax = 5
بالنسبة إلى intloop = 0 إلى IntarrayMax 'أضف فقط العناصر الستة الأولى
revalues (inloop) = request.form (selectItems) (intlistcount)
التالي
٪>
يمكن أن تمنع العديد من أخطاء وقت التشغيل الأخرى صفحات الويب من التشغيل ، مثل تثبيت بعض المكونات أو الكائنات ، لأن هناك خطأ progid أو لأن المكون غير مثبت بشكل صحيح. في هذه الحالات ، تعطي النتيجة دائمًا ActiveX إنشاء رسالة خطأ للكائن ، متبوعًا برقم سطر المكالمة إلى Server.CreateBject.
2. خطأ في إنتاج نتائج الخطأ
كما ذكر أعلاه ، قد نكون محظوظين إذا واجهنا خطأ في وقت التشغيل الذي يتسبب في توقف رمز البرنامج. ولكن هناك موقف آخر هو أن البرنامج يمكن أن ينفذ بشكل جيد ، كما لو لم يحدث شيء ، وأخيراً ينتج نتيجة غير صحيحة. هذا هو أصعب خطأ لاكتشافه وحلها لأنك لست على دراية بشيء خاطئ. على سبيل المثال ، افترض أن هناك صفحة ويب تأخذ عيد ميلاد المستخدم كقيمة تاريخ ويعرض عناصر التاريخ بشكل منفصل (يمكنك إضافتها كثلاثة إدخالات إلى قاعدة بيانات).
<٪
احصل على القيمة من الطلب وعرضها
datbirthdate = request.form (تاريخ الميلاد)
استجابة. اكتب القيمة التي أدخلتها هي: & datbirthdate & <p>
احصل على عناصر التاريخ الفردية
intday = اليوم (datbirthdate)
intmonth = شهر (datbirthdate)
intyear = سنة (datbirthdate)
وعرضها
Response.write Day: & CSTR (intday) & <br>
استجابة
reponse.write السنة: & cstr (intyear) & <br>
٪>
الشكل 7-8 هو النتيجة ، المعروضة في نمط التاريخ الأمريكي الشهر/اليوم/السنة ، كما لو كان كل شيء على ما يرام.
الشكل 7-8 الشاشة تظهر عيد ميلاد
ومع ذلك ، إذا أدخلت تاريخًا غير قانوني أو تركت مربع نص الإدخال فارغًا ، فستحصل على خطأ في وقت التشغيل ، كما هو موضح في الشكل 7-9:
الشكل 7-9 شاشة موجه خطأ
(1) إذا لم يكن خبير JScript
هذه ليست مشكلة كبيرة عند البحث عن أخطاء ، لأننا قادرون على اكتشاف سبب حدوث الأخطاء بسرعة. حقيقة أن صفحة الويب تتوقف عن تشغيلها تساعدنا على تتبع الأخطاء. ومع ذلك ، يمكن أن تحدث أخطاء غير متوقعة. على سبيل المثال ، إعادة كتابة رمز البرنامج في JScript ، لأنني لست خبير JScript ، تظهر بعض الأخطاء البسيطة.
<٪
// احصل على القيمة من الطلب وعرضه
var datbirthdate = تاريخ جديد (طلب.
Response.write (القيمة التي أدخلتها هي: datbirthdate <p>) ؛
// احصل على عناصر التاريخ الفردية
intday = datbirthdate.getDay () ؛
intmonth = datbirthdate.getMonth () ؛
intyear = datbirthdate.getyear () ؛
// وعرضها
Response.write (اليوم: intday.toString () <br>) ؛
استجابة. write (الشهر: intmonth.tostring () &
مشاركة: استخدم ASP لتنفيذ استراتيجية التشغيل الكاملة لمعلومات تتبع MP3 دعنا نتحدث بإيجاز عن علامة ID3 لـ MP3 ، لأنه يستخدم بشكل أساسي لتشغيل هذا الشيء. لم يكن MP3 ما رأيناه اليوم في البداية. هناك مغنيون ، عصور ، مجموعات ، إلخ. المعلومات ، وبعض المعلمات البسيطة فقط مثل نعم/لا للإشارة إلى ما إذا كانت خاصة أو محمية بحقوق الطبع والنشر.