Что не так со значением TDateTime

У меня есть переменная TDateTime с именем currMonth. Значение currMonth равно 30.06.2000 23:59:59. Мне нужно вставить currMonth в качестве значения по умолчанию для поля в TDBGrid с именем dtBegin.

Я пытаюсь этот код:

dtBegin->AsDateTime = currMonth;

И компилятор успешно компилирует проект, но когда я отлаживаю его, я получаю значение dtBegin не "30.06.2000 11:59:59 PM", а { 36738.9999999884 }.

Кто-нибудь знает, что не так с этим объектом TDateTime?

Заранее спасибо.

1 ответ

Решение

Существует множество ответов на тот же вопрос, который вы разместили на форуме Embarcadero в то же время, что и здесь.

Одним словом, в этом нет ничего плохого. TDateTime реализован в виде double внутренне. Инспектор отладки просто показывает вам, что double значение как есть, а не ожидаемая форматированная строка даты / времени. Это нормальное поведение, и ваш TDateTime Сам будет хорошо работать в вашем коде. Вы используете более старую версию C++Builder, поэтому у вас нет TDateTime визуализатор отладки, который есть в более новых версиях C++ Builder для отображения TDateTime Ценности лучше, вот и все.

Если вам нужно увидеть TDateTime значение в отформатированном виде внутри отладчика, вам нужно будет определить запись в списке наблюдения, который вызывает RTL DateTimeToStr() функция или TDateTime::FormatString() метод, и отображает результат для вас.

Другие вопросы по тегам