Okay, das geht dann wohl nicht. Dann machen wirs halt so, wir sind ja flexibel:
Delphi-Quellcode:
procedure SwapMemory(var a, b; size: Cardinal);
var I, max: Cardinal;
begin
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;
@brechi: Solange es keine statischen Strings sind, dürfte das kein Problem sein.