Wieso? Strings, dyn. Arrays, Objekte kann man ganz einfach vertauschen, genauso wie einen Integer.
Ich würds übrigens so machen:
Delphi-Quellcode:
procedure SwapMemory(var a, b; size: Cardinal=0);
var I, max: Cardinal;
begin
if size=0 then size:=sizeof(a);
I:=0;
max:=(ALength div 4)*4-1;
while I<=max do
begin
PCardinal(Cardinal(ADst)+I)^:=PCardinal(Cardinal(ASrc)+I)^;
inc(I, 4);
end;
case ALength+4-I of
1: PByte(Cardinal(ADst)+I)^:=PByte(Cardinal(ASrc)+I)^;
2: PWord(Cardinal(ADst)+I)^:=PWord(Cardinal(ASrc)+I)^;
3:
begin
PWord(Cardinal(ADst)+I)^:=PWord(Cardinal(ASrc)+I)^;
PByte(Cardinal(ADst)+I+2)^:=PByte(Cardinal(ASrc)+I+2)^
end;
end;
end;