![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
![]()
А не проще использовать функцию EncodeDateTime, объявленную в DateUtils?
|
![]() |
![]() |
![]() |
#12 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Если запуск был в среде дельфи, то конечно вы получите "поворот-отворот", скомпильте ехе и запустите его...
|
![]() |
![]() |
![]() |
#13 | |
Форумчанин
Регистрация: 07.02.2008
Сообщений: 150
|
![]() Цитата:
Хочется решить проблему все таки с помощью IF. Вот когда возникает проблема: Код:
Почемуне нравится такое значение, что в немнеправильно? |
|
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 07.02.2008
Сообщений: 150
|
![]() |
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 07.02.2008
Сообщений: 150
|
![]()
Уже со всем разобрался, кроме этого:
Код:
Подскажите, пожалуйста... |
![]() |
![]() |
![]() |
#16 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Массивы через запятые инициализируются. Причем, если не ошибаюсь, не всякие, а только статические. И Вы уверены, что массив нужен как таковой?
|
![]() |
![]() |
![]() |
#17 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
При таких значениях D как Double имеет значение ~2.5e+254, что не переводимо в дату. Нужно ограничить диапазон
например 01/01/1980 = 29221 01/01/2100 = 73051 перед тем как вызвать decodeDate проверяем Код:
|
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 07.02.2008
Сообщений: 150
|
![]()
Спасибо всем откликнувшимся, все заработало, добился результата!
|
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 07.02.2008
Сообщений: 150
|
![]()
А теперь ошибку выдало в этом месте:
Код:
TD(D).A = (0,4,0,15,0,255,255,0) D=7.29e-304 В чем ошибка, как с ней бороться? P.S. кроме TRY |
![]() |
![]() |
![]() |
#20 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Строго говоря прямое присвоение байтам переменной Double каких-то значений не совсем корректно. Это может привести к тому, что заданное нами значение не представимо как вещественное (т.е. является NAN или INF). Приведенный пример не приводит к ошибке. Может быть она возникает при других значениях ранее. Например, значение (0.4.0.15.0.255.255.255) точно дает -NAN. В этом случае первое же сравнение (D > ...) вызовет исключение. Т.е. некоторые данные в твоем файле не только не представимы в виде даты, но и непредставимы как вещественные.
Теперь о том как бороться. Есть две функции function IsNan(const AValue: Double): Boolean; overload; function IsInfinite(const AValue: Double): Boolean; 1. Можно дополнить условие if not isNAN(D) and not isInfinite(D) and (D > ...) 2. Можно проверить значения, которые мы пихаем в D. Для этого нужно разобраться с форматом Double. В справке есть его описание. см. Double type:internal formats 3. Непонятно упорное нежелание использовать try except |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Формат даты разняться в Delphi | Cantana | Помощь студентам | 4 | 28.04.2008 09:16 |
Изменение упакованного exe | Marsik | Софт | 5 | 28.01.2008 10:30 |
формат картинки | AndrewASV | Общие вопросы Delphi | 3 | 23.09.2007 12:45 |
SOL-запрос интервала даты и времени в Delphi | DENIS_ | БД в Delphi | 5 | 23.12.2006 12:55 |