| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Int64. Непонятный формат времени. |
| Автор: d3lp 27.8.2009, 11:02 | ||
| Здрасте. Имеется 8 байтовая последовательность символов, после ее перевода в hex получается число с обратным порядком байт (little-endian): 40E3861462833945, далее перевожу это в Int64: 4675728260250941765 Следующий код переводит это число в дату:
Все самое главное проделывает одна строчка sDate64: TDateTime absolute Date64; Вопрос: что это за формат времени такой 40E3861462833945 и как еще из него можно получить дату 20.06.2009 15:17:19 без использования директивы absolute (для повторения этого на других языках) ?? |
| Автор: CodeMonkey 27.8.2009, 12:29 |
| http://transl-gunsmoker.blogspot.com/2008/11/blog-post_24.html. |
| Автор: Romikgy 27.8.2009, 12:30 | ||
|
| Автор: CodeMonkey 27.8.2009, 12:31 |
| P.S. Т.к. используется DateTimeToStr, то это - TDateTime или формат даты OLE. |
| Автор: kami 27.8.2009, 13:04 | ||
Ничего главного она не проделывает. Просто указывает, что Date64 и sDate64 по сути дела одна переменная (т.е. занимают одну и ту же область памяти). Int64=8 байт, TDateTime=Double=8 байт, т.е. переменные идентичны по размеру друг другу. И в итоге получается, что Int64-значение при доступе к нему через sDate64 "расщепляется" на мантиссу и экспоненту. (как - см. в хелпе). Формат времени - стандартный для Delphi начиная с версии 2 (тоже - см. справку по TDateTime). Переделать код можно так, правда при этом теряется расположение переменных по одному и тому же адресу, но мне бы использовать директиву absolute просто не пришло бы в голову (никогда ей не пользовался, не хочу этим сказать что она "плохая" или "хорошая" - просто не было необходимости).
|
| Автор: d3lp 27.8.2009, 13:47 |
| Всем Спасибо, разъяснили) |
| Автор: kami 27.8.2009, 22:06 | ||||
Цитируй, пожалуйста, комментарии полностью. Потому что строчкой ниже именно это и было сказано: Добавлено через 1 минуту и 43 секунды Ну, и выше это тоже было разъяснено:
|
| Автор: Romikgy 28.8.2009, 10:00 |
| kami, зачем тогда добавлять не нужные ( не корректные ) данные в свой пост ? |
| Автор: kami 28.8.2009, 12:56 | ||
| Romikgy, Почему не нужные и некорректные? Изначально вопрос звучал, как то же самое можно сделать без использования absolute. Вот я и изложил свое мнение по этому поводу, о чем опять-таки прямо сказал в том сообщении:
И пояснил код, как умею. Старался, чтобы вышло максимально понятно и прозрачно при прочтении всего сообщения. Если ввел в заблуждение - прошу прощения. |