![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Есть запись
есть глобальная переменная
есть в процедуре код:
код работает, в Case заходит (пробовал все строки), но значения dtStart и dtEnd не меняются Смотрю дебаггером. Как были до присвоения, так и остались: 2,6395166155e-308 и 5,1542870537e-278 соответственно Сделал обе переменные локальными, так всё работает. Что не так с типом TDate в записях? D2007. Это сообщение отредактировал(а) Akella - 2.8.2010, 12:47 |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Странно, если добавить в конце
то показывается правильная дата %) |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
А структура где-то используется?
-------------------- |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
В какой-то из процедур была объявлена ещё одна переменная локально
Видать как-то они пересеклись, т.к. после того, как оставил только глобальную, проблема исчезла. |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
может это фича оптимизатора, раз ты только пишешь в StatisticsDatas то это все лишнее, попробуй убрать оптимизацию
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Демо, +1
Akella, вообще, раз
лучше использовать везде не now, а Date. |
|||
|
||||
xkor |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 8.1.2007 Где: Питер Репутация: 1 Всего: 4 |
Keeper89, чем лучше? Date просто возвращает результат Now отбросив дробную часть.
|
|||
|
||||
k0rvin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
как-то это неправильно -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
||||
|
|||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
xkor, просто насколько я помню Now возвращает TDateTime, а не Date, это конечно не принципиально.
Хотя, не прав и то, и то TDateTime ![]() Это сообщение отредактировал(а) Keeper89 - 2.8.2010, 23:50 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Я и использовал именно Date с самого начала k0rvin, Почему? Предложи лучший вариант. Добавлено через 24 секунды Да пофиг |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Потрясающее наплевательство к качеству кода. Кообще-то Keeper прав: использовать надо Date, потому что она возвращает только дату, Now - возвращает дату и время. Если мне достанется ваш код и я не видел, как вы заполняете запись, то, смотря на объявление:
а). Я решу, что в dtStart лежит дата и время? или всё же б). Я решу, что в dtStart лежит только дата? Наверное всё же второе, как вы считаете? И тогда я начну делать какие-то проверки и вычисления, и для меня станет полной неожиданностью, что у dtStart ВНЕЗАПНО появляется дробная часть. Не надо врать компилятору - целее будете. Хотите использовать Now - измените тип на TDateTime. То, что TDateTime = TTime и TDate не имеет никакого значения. Зачем создавать потенциальное место для бага? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
конечно же только дата Добавлено через 1 минуту и 44 секунды откуда она там появится? Добавлено через 2 минуты и 43 секунды 1. Никакой ошибки не будет. 2. Я изначально использовал не now, а date |
|||
|
||||
CodeMonkey |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Отсюда: Да ну. Пусть:
Теперь мы хотим определить, сегодня ли было начало:
Надо ли говорить, что никакого сообщения не появится? Но стоит исправить этот код на правильный вариант:
Как баг исчезает! -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Да, т.к. сравнение идёт вещественных чисел. Спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |