Einzelnen Beitrag anzeigen

Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Vertauschen von Pointern in einer Funktion

  Alt 9. Mär 2007, 17:09
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;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat