รุกกี้อะคาเดมี:
[UDF Series 4]: การส่งผ่านและส่งคืนข้อมูลไปยัง UDF ที่เขียนด้วย Delphi
แปลโดยวอร์ตัน
ผู้แต่ง: คริส เลเวสก์, ทีน่า กรับเบ, เบรตต์ แบนดี้
-------------------------------------------------- -------------------------------------------------- ----------------------------------
[คำชี้แจงของผู้แปล]:
ฉันเคยแปลบทความเกี่ยวกับการเขียน UDF มาหลายบทความแล้ว แม้ว่าเพื่อนบางคนอาจได้รับความช่วยเหลือเล็กน้อยจากพวกเขา แต่พวกเขาอาจไม่คุ้นเคยกับ UDF
ยังมีปัญหาในการทำความเข้าใจอยู่บ้าง วันนี้ผมจะแปลอีก 2 บทความครับ ซึ่งทั้งสองบทความมาจากระบบ mer (http://www.mers.com)
ใช่ เพื่อนที่สนใจสามารถดูข้อความต้นฉบับได้
[การโต้แย้ง]:
เมื่อไลบรารีลิงก์แบบไดนามิกไม่ได้ใช้ความระมัดระวังเป็นพิเศษสำหรับค่าข้อมูลที่ได้รับการป้องกัน UDF ของเราจะมีผลลัพธ์ข้อมูลที่มีค่าพารามิเตอร์หรือค่าที่ส่งคืน
อาจอยู่ในข้อยกเว้นที่ได้รับการป้องกันหรือผลลัพธ์ข้อผิดพลาด
[สารละลาย]:
ค่าวันที่แต่ละค่าจะถูกเก็บไว้ในประเภทจำนวนเต็ม 32 บิตสองประเภท ได้แก่ จำนวนเต็มที่มีเครื่องหมายซึ่งแสดงถึงวันที่ และ
จำนวนเต็มของเวลาที่ไม่ได้ลงนาม ใช้รหัสเดลฟีเพื่อกำหนดโครงสร้างนี้ (isc_quad) และตัวชี้ไปยังโครงสร้าง (pisc_quad):
พิมพ์
{บันทึกวันที่/เวลาระหว่างฐาน}
isc_quad = บันทึก
isc_quad_high : จำนวนเต็ม; // วันที่
isc_quad_low : พระคาร์ดินัล ; // เวลา
จบ;
pisc_quad = ^isc_quad;
เพื่อปกป้องค่าที่ส่งคืน ให้ประกาศตัวแปร isc_quad แบบปลอดภัยสำหรับเธรดภายนอกคำจำกัดความของฟังก์ชัน เพื่อให้คงค่าที่ส่งคืนไว้ (หากค่าที่ส่งคืน
เป็นข้อมูลประเภทวันที่)
เธรดวาร์
tempquad : isc_quad;
จากนั้นเขียนฟังก์ชันของคุณเพื่อให้ผลลัพธ์ชี้ไปที่ตัวแปรเธรด
//กำหนดฟังก์ชั่น
// ฟังก์ชั่นนี้จะบวกจำนวนวันเข้ากับวันที่ที่มีอยู่
ฟังก์ชั่น dayadd (var days: integer; ibdate pisc_quad) : pisc_quad;
เริ่ม
tempquad.isc_quad_high := ibdate^.isc_quad_high + วัน;
tempquad.isc_quad_low := ibdate^.isc_quad_low;
ผลลัพธ์ := @tempquad;
จบ;
ผู้เขียนมาจาก: mer Systems inc.. http://www.mers.com