在Delphi中复制带偏移量的内存

时间:2012-05-20 15:32:00

标签: delphi memory copy

我想复制带偏移量的内存块,是否可能?

这是我到目前为止的代码:

const
  SOURCE: array [0..5] of Byte = ($47, $49, $46, $38, $39, $61);
var
  Destination: Pointer;
begin
  // This is a full copy
  Move(SOURCE, Destination^, SizeOf(SOURCE));

  // If i want to copy from the third byte, is it possible?
  // I imagine the code should be, but it cannot be compiled.
  Move(Slice(SOURCE^, {Offset=}2)^, Destination^, SizeOf(SOURCE) - 2);
end;

2 个答案:

答案 0 :(得分:9)

您想要实现的目标并不完全清楚,但它看起来像是

MoveMemory(pointer(NativeUInt(Destination) + 2), @SOURCE[0], SizeOf(SOURCE) - 2)

虽然我怀疑你真的想要

MoveMemory(pointer(NativeUInt(Destination) + 2), @SOURCE[2], SizeOf(SOURCE) - 2)

答案 1 :(得分:2)

要使用Move()复制数组的一部分,请执行以下操作:

Move(SOURCE[Offset], Destination^, SizeOf(SOURCE)-Offset);