在 delphi 10.2 Tokyo 中使用 TULargeInteger 进行转换与之前的版本不同

Casting with TULargeInteger in delphi 10.2 Tokyo differ from previous version

使用新编译器 10.2 缺少属性 LowPart 和 HighPart 的 TULargeInteger 进行转换。

uses Winapi.Windows;

    function RetLargeInt: Int64;
    var
      ALow: DWORD;

    begin
      {Do Something
        With ALow
      }
      TULargeInteger(Result).LowPart := ALow; {Missing 'LowPart'}
    end;

    procedure AProc;
    var
     ALocalInt: Int64;
    begin
      ALocalInt := RetLargeInt;
      {Do Something}
    end;

在 10.2 Tokyo 中,TULargeInteger 的声明已更改为:

TULargeInteger = ULARGE_INTEGER;

至:

TULargeInteger = UInt64;

这意味着您无法再访问公开 LowPartULARGE_INTEGER 记录字段。

ULARGE_INTEGER = record
    case Integer of
    0: (
      LowPart: DWORD;
      HighPart: DWORD);
    1: (
      QuadPart: ULONGLONG);
  end;

您可以更改代码以改用 ULARGE_INTEGER

ULARGE_INTEGER(Result).LowPart := ALow;