Re[2]: SWAP32
От: Серж  
Дата: 01.09.15 10:20
Оценка: 1 (1)
Здравствуйте, LuciferSaratov, Вы писали:

LS>Здравствуйте, Серж, Вы писали:


С>>Каким способом это возможно реализовать в Delphi XE6 ?


LS>для подобных вещей в паскале есть очень удобное слово absolute.


На этом и остановился, спасибо:

function TForm1.Swap32(Value: LongWord): LongWord; //register; overload;
var
B: Byte;                      //  временный байт
WordArr: array[0..3] of byte; //  массив из 4-х байт
W: LongWord absolute WordArr; //  32-битное Word с таким же начальным адресом в памяти как и массив WordArr
begin
  W:= Value;                  //  присваиваем Word-у значение Word в котором нужно переставить местами байты
  B:= WordArr[0];             //  присваиваем временному байту значение [0] байта массива (потому что оно затрется)
  WordArr[0]:= WordArr[1];    //  присваиваем [0] байту массива значение [1] байта
  WordArr[1]:= B;             //  присваиваем [1] байту массива значение временного байта
  B:= WordArr[2];             //  аналогично...
  WordArr[2]:= WordArr[3];
  WordArr[3]:= B;
  result:= W;                 //  очень важная строка в этой функции :)
end;

Результат проверки:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.