【发布时间】:2014-12-15 12:49:42
【问题描述】:
我是 Delphi 的新手,我需要在我的项目中添加一些常量到 TFileTime,它是 64 位值的上下部分的记录。如何在德尔福中做到这一点?我只找到了 C++ 中的代码,但我不知道如何在 Delphi 中制作 unsigned int64 (ULONGLONG),也不知道如何将其转换为 longword (DWORD):
ULONGLONG qwResult;
// Copy the time into a quadword.
qwResult = (((ULONGLONG) ft.dwHighDateTime) << 32) + ft.dwLowDateTime;
// Add constant
qwResult += constant;
// Copy the result back into the FILETIME structure.
ft.dwLowDateTime = (DWORD) (qwResult & 0xFFFFFFFF );
ft.dwHighDateTime = (DWORD) (qwResult >> 32 );
谢谢
【问题讨论】:
-
const MyFileTime: TFileTime = (dwLowDateTime: 123; dwHighDateTime: 456); -
我得到了存在的 ft 值,我只需要给它添加一些常量。
-
您使用的是哪个版本的 Delphi?特别是,您的 Delphi 版本是否具有
Int64和/或UInt64类型? -
OK UInt64 解决了一半的问题... :)
-
@hvd,
UInt64的存在并不重要,因为FILETIME的有效范围是0..High(Int64)。
标签: delphi casting unsigned int64