I want to copy a memory block with an offset, is it possible?
This is the code I have so far:
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;
It is not entirely clear what you want to achieve, but it looks like
MoveMemory(pointer(NativeUInt(Destination) + 2), @SOURCE[0], SizeOf(SOURCE) - 2)
although I suspect you actually want
MoveMemory(pointer(NativeUInt(Destination) + 2), @SOURCE[2], SizeOf(SOURCE) - 2)
To use Move()
to copy a portion of the array, do it like this:
Move(SOURCE[Offset], Destination^, SizeOf(SOURCE)-Offset);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With