أكاديمية المبتدئين:
[سلسلة UDF 4]: تمرير البيانات وإعادتها إلى UDF المكتوب بلغة دلفي
تمت ترجمته بواسطة وارتون
المؤلف: كريس ليفيسك، تينا جروب، بريت باندي
-------------------------------------------------- ----------------------------------
[قول المترجم]:
لقد قمت بترجمة العديد من المقالات حول كتابة UDF من قبل، على الرغم من أن بعض الأصدقاء ربما حصلوا على القليل من المساعدة منهم، إلا أنهم قد لا يكونون على دراية بـ UDF.
لا تزال هناك بعض المشاكل في الفهم. سأقوم اليوم بترجمة مقالتين إضافيتين، كلاهما من نظام mer (http://www.mers.com)
نعم، يمكن للأصدقاء المهتمين الاطلاع على النص الأصلي.
[دعوى]:
عندما لا تتخذ مكتبة الارتباط الديناميكي احتياطات خاصة لقيم البيانات المحمية، فإن UDF الخاص بنا لديه نتائج بيانات مع قيم المعلمات أو قيم الإرجاع.
قد يكون في استثناء محمي أو نتيجة خطأ.
[حل]:
يتم تخزين كل قيمة تاريخ في نوعين من الأعداد الصحيحة ذات 32 بت: عدد صحيح موقّع يمثل التاريخ، ورقم
عدد صحيح غير موقع من الوقت. استخدم كود دلفي لتحديد هذه البنية (isc_quad) والمؤشر إلى البنية (pisc_quad):
يكتب
{سجل التاريخ/الوقت interbase}
isc_quad = سجل
isc_quad_high: عدد صحيح؛
isc_quad_low: الكاردينال // الوقت
نهاية؛
pisc_quad = ^isc_quad;
من أجل حماية القيمة المرجعة، أعلن عن متغير isc_quad آمن لمؤشر الترابط خارج تعريف الوظيفة بحيث يحتفظ بالقيمة المرجعة (إذا كانت القيمة المرجعة
هي بيانات نوع التاريخ).
Threadvar
tempquad : isc_quad;
ثم اكتب وظيفتك بحيث تشير النتيجة إلى متغير مؤشر الترابط.
// تحديد الوظيفة
// تضيف هذه الوظيفة عددًا من الأيام إلى تاريخ موجود.
دالة dayadd (أيام var: عدد صحيح؛ ibdate pisc_quad) : pisc_quad Export؛
يبدأ
tempquad.isc_quad_high := ibdate^.isc_quad_high + أيام;
tempquad.isc_quad_low := ibdate^.isc_quad_low;
النتيجة := @tempquad;
نهاية؛
المؤلف يأتي من: Mers Systems Inc.. http://www.mers.com