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_dateISC_QUAD* 作为输入传递,然后读取输出结构的 tm_mon 字段。

int getMonth(ISC_QUAD *ib_date)
{
    struct tm tm_date;
    isc_decode_date(ibdate, &tm_date);
    return tm_date.tm_mon;
}