[Lazarus] Passing a section of an array to a function.

Dave Coventry dgcoventry at gmail.com
Mon Sep 10 08:36:41 CEST 2012


Hi,

I have an array of Byte which I have loaded from a file.

I want to process a 100 byte section of the array which starts at
offset 32 in my array.

My function (or procedure) is as follows:

procedure decompress_r(cbuf: array of byte);
var
  len,i: integer;
begin
  i:=1;
  if (cbuf[0]and $F0)=$20 then
  begin
    Inc(i,2);
    len:=cbuf[i]and $7;
  end;
  ...
end;

I call my procedure by

decompress_r(&buf[32]);

It seems to work. the first element in the array is 0x20, but the rest
of the array is garbage.

The array sent is:
buf[32]=32
buf[33]=0
buf[34]=0
buf[35]=7
buf[36]=0

The array received is
cbuf[0]=32
cbuf[1]=27
cbuf[2]=255
cbuf[3]=247
cbuf[4]=255

Can anyone tell me the correct way to pass the portion of the array to
the function?

Many thanks.

Dave




More information about the Lazarus mailing list