Imagine I have this function:

procedure ArrayTest(const data : array of char);
begin
  ...
end;

and in another routine I have a pchar variable. If I slice the array byte
doing this:

ArrayTest(myPChar[0..99]);

then inside ArrayTest it will appear that data is 100 characters, which is
exactly what I'd expect.

However, it surprised me that this syntax was accepted (with a dereferenced
pchar):

ArrayTest(myPChar^);

as well as this syntax (with a simple char):

ArrayTest(myChar);

In both of those cases, ArrayTest thinks it's got an array of length 1.

My question is (and I know this is a long shot): is there some sort of
compiler directive or directive I can include in my source code to disallow
the syntax of my second and third examples, ie., to disallow passing a
single element as an open array?

Thanks,

-SG
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to