Быстрый способ обмена значений в 2х переменных.
Быстрый способ обмена значений в 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
Автор ___ALex___