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



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






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




Все украшения России войковская ювелирные изделия. Огромный выбор! красивое постельное белье профнастил Сочи стеклянные перегородки для душа