0

我正在尝试将以下 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;
4

1 回答 1

1

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;
}
于 2015-07-30T06:51:26.403 回答