![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть выражение uint64_t result = *(uint64_t*)(&ts);
Как оно будет выглядеть в Delphi??? Вот вся функция struct TTimeStamp { int Time; // The Time field indicates the number of milliseconds that have elapsed since midnight. int Date; // The Date field indicates the number of calendar days since the start of the calendar (the number of days since 1/1/0001 plus one). }; uint64_t __fastcall DateTimeToInt64( TDateTime Value ) { TTimeStamp ts = DateTimeToTimeStamp( Value ); uint64_t result = *(uint64_t*)(&ts); return result; } |
#2
|
|||
|
|||
![]() Ну, наверное, можно попробовать так:
Код:
type TTimeStamp = packed record Time Integer; Date Integer; end; function DateTimeToInt64(Value : TDateTime) : Cardinal; // 64-bit unsigned int var ts : TTimeStamp; begin ts.Date := DaysBetween(EncodeDate(1,1,1),DateOf(Value))+1; ts.Tme := MilliSecondOf(TimeOf(Value)); Result := Cardinal(ts); end; |
#3
|
|||
|
|||
![]() Чуть поправил и все ровно не работает как нужно
Код:
function DateTimeToInt64(Value : TDateTime) : Cardinal; // 64-bit unsigned int var ts : TTimeStamp; begin ts.Date := DaysBetween(EncodeDate(1,1,1),DateOf(Value))+1; ts.Time := MilliSecondOf(TimeOf(Value)); Result := Cardinal(ts.Date +ts.Time); end; А обратно как? Есть также функция на с++ Код:
//------------------------------------------------------------------------------ // Из uint64_t в TDateTime //------------------------------------------------------------------------------ TDateTime __fastcall Int64ToDateTime( uint64_t Value ) { TTimeStamp ts; *((uint64_t*)(&ts)) = Value; return TimeStampToDateTime( ts ); } Последний раз редактировалось yarockiisergei, 29.10.2015 в 09:14. |
#4
|
|||
|
|||
![]() Интересует конкретно вот эта операция
Код:
*((uint64_t*)(&ts)) = Value; Есть вот такая структура type TDateTime = type Double; type TTimeStamp = record Time: Integer; // Число миллисекунд прошедших с полуночи Date: Integer; // Количество дней прошедших с 1 января 0001г end; function Convert_my() : TDateTime var ts: TTimeStamp; begin ts:= //Как сюда положить вот это число 3160610655694693 -? //Возможно только dt.Time dt.Date //В с++ все вроде как просто *((uint64_t*)(&ts)) = Value; и далее TimeStampToDateTime( ts ); Convert_my:= TimeStampToDateTime( ts); end; |
#5
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
|||
|
|||
![]() Я узнал что можно вложить через указатель на структуру...
Вопрос как реализовать???? |
#7
|
|||
|
|||
![]() Код:
var ts : ^Cardinal; begin New(ts); ts^ := 3160610655694693; |
#8
|
|||
|
|||
![]() Да.... спасибо все заработало.
|