Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Быстрый способ обмена значений двух переменных

01.01.2007
procedure SwapVars1(var u, v; Size: Integer); 
var
  x
: Pointer;
begin
 
GetMem(x, Size);
 
try
   
System.move(u, x^, Size);
   
System.move(v, u, Size);
   
System.move(x^, v, Size);
 
finally
   
FreeMem(x);
 
end;
end;
 
 
procedure SwapVars2
(var Source, Dest; Size: Integer);
 
// By Mike Heydon, mheydon@eoh.co.za
begin
 
asm
     push edi
     push esi
     mov esi
,Source
     mov edi
,Dest
     mov ecx
,Size
     cld
 @1
:
     mov al
,[edi]
     xchg
[esi],al
     inc si
     stosb
     loop @1
     pop esi
     pop edi
 
end;
end;
 
procedure TForm1
.Button2Click(Sender: TObject);
begin
  SwapVars1
(X1, X2, SizeOf(Integer));
end;

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php


var 
 X1
, X2: Byte;
begin
 X1
:= X2 xor X2;  
 X2
:= X1 xor X2; // X2 = X1
 X1
:= X1 xor X2; // X1 = X2

Автор: ___ALex___

https://forum.pascal.dax.ru