Delphi-Quellcode:
procedure ReverseArray(AData: Pointer;
const ASize, ACount: Integer);
var
Left, Right, Temp: Integer;
P: PCardinal;
begin
P := AData;
Left := 0;
Right := ACount;
Result := Left < Right;
if Result
then
begin
while (Left < Right)
do
begin
{Temp := AValues[Left];
AValues[Left] := AValues[Right];
AValues[Right] := Temp;} // Don't know how to exchange with pointers :(
//Move(P^, ..., ASize); // Don't know how if I don't know types ????????
Inc(P);
Inc(Left);
Dec(Right);
end;
end;
end;
I don't know how replace part should works. Above is form reversing knowed type array.

Don't use
PCardinal
and
Inc(P)
because this would limit you to elements with the same size as Cardinal: if
P
is of type
PCardinal
, then it points to an element of
SizeOf(Cardinal)
bytes. If you then do
Inc(P)
you advance
P
by
SizeOf(Cardinal)
bytes. But you want
P
to point to elements of size
ASize
bytes, so use
PByte
and
Inc(P, ASize)
(as I already wrote

).