суббота, 9 февраля 2013 г.

как из tdatetime выделить время delphi

Сообщения: 6483Зарегистрирован: 25 окт 2004, 18:07

видео пока не смотрел, но прошу объяснить - зачем видео, если есть статья и примеры? Вы творите что-то новое? Или сейчас люди неспособны ничего кроме ютуба воспринимать?

Сообщения: 3Зарегистрирован: 26 апр 2012, 06:03

Вот что получилось. Качество неважное, слишком большой размер экрана снимал. Если будет интересно кому, могу переснять. В grid IBExpert не отображается время, появляется только если grid перевести в режим Form View, после того как установить и снять Null.Проблема в формате даты.Продолжаю копать ....

Сообщения: 1219Зарегистрирован: 21 мар 2005, 11:48

Разработчик Firebird

Ты ошибся везде :а) в БД объявил пар-ры ф-ций с BY DESCRIPTOR, но твой код работает не c дескрипторами.б) где cdecl ?в) дата\время не передаются в UDF как doubleЧитай статью ещё раз, внимательно и полностью, а не по диагонали через слово

Сообщения: 3Зарегистрирован: 26 апр 2012, 06:03

Последний раз редактировалось 30 апр 2012, 13:25, всего редактировалось 1 раз.

Здравствуйте,WinXP SP3, FireBird 2.5 Version 5.2.1.26351, IBExpert 2012.04.18, Delphi 7.0 (Build 8.1) Цель: Научиться писать собственные UDF функции. Например для начала написал две простые UDF функции для обработки даты.Код: function fDateOf (Value: double): double;begin Result := DateOf(Value);end;function fTimeOf(Value: double): double;begin Result := TimeOf(Value);end;Проверяю, работает. Подключаю UDF в IBExpertКод: SET SQL dialect 3;--/*DROP external FUNCTION Date_Of;DROP external FUNCTION Time_Of;--*/DECLARE external FUNCTION Date_OfDOUBLE precision by DESCRIPTORreturns DOUBLE precision by DESCRIPTORentry_point 'fDateOf' module_name 'date_time_udf';DECLARE external FUNCTION Time_OfDOUBLE precision by DESCRIPTORreturns DOUBLE precision by DESCRIPTORentry_point 'fTimeOf' module_name 'date_time_udf'; Пробую запустить Код: select  date_of((select current_date from rdb$database)) as "Дата"       ,time_of((select current_time from rdb$database)) as "Время"from rdb$database     rows 1Результат Тот же самый результат если Код: select  date_of(0) as "Дата"       ,time_of(0) as "Время"from rdb$database     rows 1Догадываюсь, что проблема м.б. в разных форматах - Delphi TDateTime = double - FireBirdКод: type   TIBDate = integer;   TIBTime = Cardinal;   TIBTimeStamp= packed record                    Date: TIBDate;                    Time: TIBTime;                 end;Вопрос :Если только в этом причина, то почему select date_of(0) as "Дата" возвращает null ?В чем мои ошибки ? Буду рад прочитать замечания.Статью читал, но что-то наверное не понял. Как говорится... если что, извините Убедительно прошу "не мазать мордой лица по фейсу", типа: погугли, а слабо почитай доку и т.д. Спасибо. Николай.

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

Форум по InterBase, Firebird и Yaffil

iBase.ru Forum • Просмотр темы - Учусь писать udf

Комментариев нет:

Отправить комментарий