Akademi Pemula:
[UDF Seri 4]: Melewati dan mengembalikan data ke UDF yang ditulis dalam Delphi
diterjemahkan oleh warton
Penulis: Chris Levesque, Tina Grubbe, Brett Bandy
--------------------------------------------------- -----------------------------------
[Pernyataan penerjemah]:
Saya telah menerjemahkan beberapa artikel tentang penulisan UDF sebelumnya. Walaupun beberapa teman mungkin mendapat sedikit bantuan dari mereka, mereka mungkin belum familiar dengan UDF.
Masih ada beberapa kendala dalam pemahaman. Hari ini, saya akan menerjemahkan dua artikel lagi, keduanya berasal dari sistem mer (http://www.mers.com)
Ya, teman-teman yang berminat bisa melihat teks aslinya.
[argumen]:
Ketika pustaka tautan dinamis tidak mengambil tindakan pencegahan khusus untuk nilai data yang dilindungi, UDF kami memiliki hasil data dengan nilai parameter atau nilai kembalian.
Mungkin dalam pengecualian yang dilindungi atau hasil kesalahan.
[Larutan]:
Setiap nilai tanggal disimpan dalam dua tipe bilangan bulat 32-bit: bilangan bulat bertanda yang mewakili tanggal, dan a
Bilangan bulat waktu yang tidak ditandatangani. Gunakan kode delphi untuk mendefinisikan struktur ini (isc_quad) dan penunjuk ke struktur (pisc_quad):
jenis
{catatan tanggal/waktu antarbase}
isc_quad = catatan
isc_quad_high : bilangan bulat; // tanggal
isc_quad_low : kardinal ; // waktu
akhir;
pisc_quad = ^isc_quad;
Untuk melindungi nilai yang dikembalikan, deklarasikan variabel isc_quad yang aman untuk thread di luar definisi fungsi sehingga dapat menampung nilai yang dikembalikan (jika nilai yang dikembalikan
adalah data tipe tanggal).
threadvar
tempquad : isc_quad;
Kemudian tulis fungsi Anda sehingga hasilnya mengarah ke variabel thread.
//mendefinisikan fungsi
// fungsi ini menambahkan jumlah hari ke tanggal yang sudah ada.
fungsi dayadd( var hari: integer; ibdate pisc_quad): pisc_quad;
mulai
tempquad.isc_quad_high := ibdate^.isc_quad_high + hari;
tempquad.isc_quad_low := ibdate^.isc_quad_low;
hasil := @tempquad;
akhir;
Penulis berasal dari : mer system inc. http://www.mers.com