function MakeUInt64(const AH, AL: LongWord): UInt64;
begin
Result := UInt64(TDFUInt64(TDFUInt64(AL) and UInt64($00000000FFFFFFFF)) or UInt64(UInt64(AH shl 32) and UInt64($FFFFFFFF00000000)));
end;
此函数执行,Result返回数据为32位值,不能达到64位数据。运算后数据被32位截取了。可能是Delphi平台不支持32位以上的and or运算。
函数替换为
function MakeUInt64(const AH, AL: LongWord): UInt64;
begin
Result := AL + (AH * $0000000100000000);
end;
就能解决Result返回数据为64位,未被32位截取。