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

10-08 07:50