ルーキーアカデミー:
[UDF シリーズ 4]: Delphi で作成された UDF へのデータの受け渡し
ワートン訳
著者: クリス・レベスク、ティナ・グラッベ、ブレット・バンディ
-------------------------------------------------- ----------------------------------
[翻訳者の声明]:
以前に UDF の作成に関する記事をいくつか翻訳したことがありますが、少し助けてもらった友人もいるかもしれませんが、UDF についてはよく知らないかもしれません。
まだ理解に問題がいくつかあります。今日は、さらに 2 つの記事を翻訳します。どちらも mer システム (http://www.mers.com) からのものです。
はい、興味のある友人は原文を閲覧することができます。
[口論]:
ダイナミック リンク ライブラリが保護されたデータ値に対して特別な予防措置を講じていない場合、UDF にはパラメータ値または戻り値を含むデータ結果が含まれます。
保護された例外またはエラー結果に含まれる可能性があります。
[解決]:
各日付値は、日付を表す符号付き整数と、日付を表す符号付き整数の 2 つの 32 ビット整数型で格納されます。
時間の符号なし整数。 Delphi コードを使用して、この構造体 (isc_quad) と構造体へのポインタ (pisc_quad) を定義します。
タイプ
{ベース間日付/時刻レコード}
isc_quad = レコード
isc_quad_high : 整数;
isc_quad_low : 基数 ;
終わり;
pisc_quad = ^isc_quad;
戻り値を保護するには、関数定義の外でスレッドセーフな isc_quad 変数を宣言して、戻り値を保持するようにします (戻り値が
は日付型データです)。
スレッド変数
tempquad : isc_quad;
次に、結果がスレッド変数を指すように関数を作成します。
//関数を定義
// この関数は既存の日付に日数を加算します。
関数 dayadd(var days: 整数; ibdate pisc_quad) : cdecl;
始める
tempquad.isc_quad_high := ibdate^.isc_quad_high + 日数;
tempquad.isc_quad_low := ibdate^.isc_quad_low;
結果 := @tempquad;
終わり;
著者の出身地: mer Systems inc.. http://www.mers.com