Delphi Firebird Dátum paraméter átadása UDF-be

Delphi Firebird Dátum paraméter átadása UDF-be
2007-04-19T09:34:38+02:00
2007-04-19T10:35:06+02:00
2022-11-04T07:20:36+01:00
XSun
A Probléma a következő.
Delphiben írtam egy DLL-t
type
PTDATETIME = ^TDATETIME;

Function MONTH(DATUM:PTDATETIME):Integer;stdcall
implementation

Function MONTH(DATUM:PTDATETIME):Integer;
VAR XEV,XHO,XNAP:Word;
BEGIN
DecodeDate(DATUM^,XEV,XHO,XNAP);
Result:=XHO;
END;

Ez aztán be lett regisztrálva a Firebird alá
DECLARE EXTERNAL FUNCTION HO
DATE
RETURNS INTEGER BY VALUE
ENTRY_POINT 'MONTH' MODULE_NAME 'TESTDLL.DLL';

Ha egy dátumot adok meg értéknek akkor a visszatérési érték 12 lesz.
A későbbi vizsgálatok kiderítették hogy a dátum amit paraméterként kap át at '1899.12.31' tehát valójában nullát kap meg.

Szerintetek hol lehet a gáz?
Mutasd a teljes hozzászólást!
Ott a gáz, hogy nem jó típust használsz. A dátumos UDF-eknek külön lelkiviláguk van, csakúgy, mint a karaktereseknek is.

IB_TimeStamp = record IB_Date: Integer ; // Date IB_Time: Cardinal ; // Time end; PIB_TimeStamp= ^IB_TimeStamp;

A függvényed bemenő paramétere PIB_TimeStamp típusú legyen, majd ennek bármelyik mezőjét fel tudod használni. Ha visszatérési érték esetleg szintén dátum, na az már keményebb, azt most ide nem írom le.

Üdv: Alex
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd