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