Кастинг с TULargeInteger в delphi 10.2 Tokyo отличается от предыдущей версии

Приведение с помощью TULargeInteger с новым компилятором 10.2, в котором отсутствуют атрибуты LowPart и HighPart.

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;

person Dicky Tamara    schedule 28.05.2017    source источник
comment
Или используйте Int64Rec   -  person David Heffernan    schedule 29.05.2017


Ответы (1)


В 10.2 Токио объявление TULargeInteger изменилось с:

TULargeInteger = ULARGE_INTEGER;

to :

TULargeInteger = UInt64;

Это означает, что вы больше не можете получить доступ к ULARGE_INTEGER полям записи, которые раскрывают LowPart.

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

Вместо этого вы можете изменить код, чтобы использовать ULARGE_INTEGER:

ULARGE_INTEGER(Result).LowPart := ALow;
person LU RD    schedule 28.05.2017