Code: |
var X1, X2: Byte; begin X1 := X2 xor X2; X2 := X1 xor X2; // X2 = X1 X1 := X1 xor X2; // X1 = X2 |
Автор ___ALex___
Code: |
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, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. 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
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!