Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Doing a SetLength on an array passed into a proc by reference

Tags:

delphi

Sure, even I can do this...

var
  testarray : array of string;

setlength(testarray, 5);

but if I want to get clever and have a procedure into which I pass the array by referance like this I cant do it!

procedure DoStuffWithArray(var passedarray : array of string);
begin
  setlength(passedarray, 5);
end;

compiler says 'incompatible types' on the single line of code in my proc.

I can do other stuff on the array like set set element values if i do a setlength before i call the proc, but I cannot do the setlength in my proc, which is what I want to do.

Any help much appreciated, thanks all.

like image 261
csharpdefector Avatar asked May 23 '10 01:05

csharpdefector


1 Answers

Array types as parameters need to have a name. So:

type TStringArray = array of string;
procedure DoStuffWithArray(var passedarray: TStringArray);

Then it would work.

But if you need a dynamically-sized group of strings, you'd probably find a TStringList easier to use anyway.

like image 132
Mason Wheeler Avatar answered Nov 13 '22 02:11

Mason Wheeler