我正在尝试将以下UDF函数从Delphi重写为C,但是我不知道应该使用哪种参数类型代替PISC_QUAD以及如何从param值中提取月份数。
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;
}