Using the prefix var to return a different dynamic array

Top 

Example code : Using the prefix var to return a different dynamic array

procedure PickOne(var output : TDynamicArray; input1, input2 : TDynamicArray);

var x : integer;

begin

   x := RandomInt(100);

   if x >50 then

      output   := input1

   else output := input2;

end;

 

 

procedure TForm1.W3Button5Click(Sender: TObject);

var d1 : TDynamicArray;

    d2 : TDynamicArray;

    d3 : TDynamicArray;

 

begin

 d1[0] :=100;

 d2[0] :=200;

 d3[0] :=300;

 

 PickOne(d1,d2,d3);

 ShowMessage(IntToStr( d1[0]) );

 ShowMessage(IntToStr( d2[0]) );

 ShowMessage(IntToStr( d3[0]) );

 

// at this point d1[0] = ?

end;

Result is:

Note that d1[0] will be changed if 

IF x > 50 then d1[0] :=  200;

IF x < 50 then d1[0] :=  300;

-------------------------------------

Note that d1[0] will be updated, d1(dynamic array) is treated as a reference.