Страница 1 из 1

Как передать в UDF дату ?

Добавлено: 16 авг 2011, 00:11
vsimashko
Подскажите, как передать в UDF дату ? UDF написана на Делфи, пробовал такие варианты вызова:
function CsUkrDate2 ( var INDate : tDateTime; var InGenetive : Integer ) : PAnsiChar; cdecl; export;
function CsUkrDate2 ( var INDate : Double; var InGenetive : Integer ) : PAnsiChar; cdecl; export;
( в Делфи tDateTime == Double )
В базе функцию создавал так:
( DECLARE EXTERNAL FUNCTION CSUKRDATE2
DOUBLE PRECISION, INTEGER
RETURNS CSTRING(17) FREE_IT
ENTRY_POINT 'CsUkrDate2' MODULE_NAME 'SIMUDF' }
При вызове функции ошибка "conversion error from string "1-JAN-2000". Вызывать пробовал так:
csukrdate2( dbegin ,1)
csukrdate2(cast(dbegin as double precision),1)
csukrdate2(cast(dbegin as timestamp ),1)
Первый параметр при создании функции пробовал не DOUBLE PRECISION, а TIMESTAMP - аналогично

Re: Как передать в UDF дату ?

Добавлено: 16 авг 2011, 13:09
kdv
что "аналогично"?
про передачу даты в udf написано тут
http://www.ibase.ru/devinfo/udf_ok.htm
нужно также учитывать, что это писалось для 1 диалекта, где DATE это в 3 диалекте уже TIMESTAMP, но те же 8 байт.

p.s. не выдумывайте самостоятельно всякую ерунду. читайте статьи и смотрите библиотеки функций с исходниками как примеры.

Re: Как передать в UDF дату ?

Добавлено: 24 авг 2011, 13:58
vsimashko
Всё заработало, спасибо за ссылку, и за совет.