[Lazarus] Got "Pointer", expected "Open Array Of Char"

Howard Page-Clark hdpc at talktalk.net
Sun Jan 13 15:11:25 CET 2013

On 13/1/13 1:58, Dave Coventry wrote:
> On 13 January 2013 14:56, leledumbo <leledumbo_cool at yahoo.co.id> wrote:
>> Or const since it's meant to be read only
> Hmmm.
> Doesn't help. Still getting the same error.
> I've tried passing the src parameter as a Pointer and then casting it
> as an array of Char.
> procedure Copybytes(var dst: Pointer; src: Pointer; len: integer);
> var
>    i: integer;
>    data_in,data_out: Array of Char;
> begin
>    data_in:=@src;
>    data_out:=@dst;
>    for i:=0 to len-1 do
>    begin
>      data_out[i]:=data_in[i];
>    end;
> end;
> Calling the procedure:     Copybytes(@dst[dloc], at src[sloc],16);
> I get the error
> Error: Can't assign values to an address

One source of confusion arises because your parameter declaration "array 
of char" in procedure Copybytes(var dst: array of Char ...
means something different from your variable declaration

  data_in, data_out: Array of Char;

where "Array of Char" denotes a dynamic array - rather different from 
the parameter-passing declaration.

More information about the Lazarus mailing list