Delphi 到 C 的 UDF 函数
Delphi UDF function to C
我正在尝试将以下 UDF 函数从 Delphi 重写为 C,但我不知道应该使用哪种参数类型来代替 PISC_QUAD 以及如何从中提取月份编号参数值。
function GetMonthShortName(ib_date: PISC_QUAD): PAnsiChar; cdecl; export;
var
tm_date: tm;
begin
isc_decode_date(ib_date, @tm_date);
case tm_date.tm_mon of
0: result := PAnsiChar('Jan');
1: result := PAnsiChar('Feb');
2: result := PAnsiChar('Mar');
3: result := PAnsiChar('Apr');
4: result := PAnsiChar('May');
5: result := PAnsiChar('June');
6: result := PAnsiChar('July');
7: result := PAnsiChar('Aug');
8: result := PAnsiChar('Sept');
9: result := PAnsiChar('Oct');
10: result := PAnsiChar('Nov');
11: result := PAnsiChar('Dec');
else result:=nil;
end;
end;
PISC_QUAD
是 ^ISC_QUAD
。即指向 ISC_QUAD
的指针。
在 C 中为 ISC_QUAD*
。
以完全相同的方式提取月份数。调用 isc_decode_date
将 ISC_QUAD*
作为输入传递,然后读取输出结构的 tm_mon
字段。
int getMonth(ISC_QUAD *ib_date)
{
struct tm tm_date;
isc_decode_date(ibdate, &tm_date);
return tm_date.tm_mon;
}
我正在尝试将以下 UDF 函数从 Delphi 重写为 C,但我不知道应该使用哪种参数类型来代替 PISC_QUAD 以及如何从中提取月份编号参数值。
function GetMonthShortName(ib_date: PISC_QUAD): PAnsiChar; cdecl; export;
var
tm_date: tm;
begin
isc_decode_date(ib_date, @tm_date);
case tm_date.tm_mon of
0: result := PAnsiChar('Jan');
1: result := PAnsiChar('Feb');
2: result := PAnsiChar('Mar');
3: result := PAnsiChar('Apr');
4: result := PAnsiChar('May');
5: result := PAnsiChar('June');
6: result := PAnsiChar('July');
7: result := PAnsiChar('Aug');
8: result := PAnsiChar('Sept');
9: result := PAnsiChar('Oct');
10: result := PAnsiChar('Nov');
11: result := PAnsiChar('Dec');
else result:=nil;
end;
end;
PISC_QUAD
是 ^ISC_QUAD
。即指向 ISC_QUAD
的指针。
在 C 中为 ISC_QUAD*
。
以完全相同的方式提取月份数。调用 isc_decode_date
将 ISC_QUAD*
作为输入传递,然后读取输出结构的 tm_mon
字段。
int getMonth(ISC_QUAD *ib_date)
{
struct tm tm_date;
isc_decode_date(ibdate, &tm_date);
return tm_date.tm_mon;
}