Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing Static arrays as parameters for Dynamic arrays in Delphi

I have this array:

const / var
  _Data : array [0..4] of array [0..3] of Double =
    ((0,0,0,0),
     (0,0,1,1),
     (1,0,1,0),
     (1,1,0,0),
     (1,1,1,1));

I wanna pass it as param value for this procedure:

procedure NN.NetTraining(Data: TDoubleMatrix);

Where:

  TDoubleArray    = array of Double;
  TDoubleMatrix   = array of TDoubleArray;

Is There some manner to cast or convert this static array into dynamic array in Delphi (2009) ?

Thanks in advance.

like image 730
Billiardo Aragorn Avatar asked Oct 20 '09 09:10

Billiardo Aragorn


2 Answers

While this does not do exactly what you want (for reasons given in Gamecat's answer), it may be a viable work-around for you to initialise your dynamic data array:


var Data:TDoubleMatrix;
begin
  Data:=TDoubleMatrix.create(TDoubleArray.create(0,0,0,0),
                             TDoubleArray.create(0,0,1,1),
                             TDoubleArray.create(1,0,1,0),
                             TDoubleArray.create(1,1,0,0),
                             TDoubleArray.create(1,1,1,1));
end;
like image 61
PhiS Avatar answered Nov 07 '22 03:11

PhiS


Dynamic arrays differ from normal arrays.

Dynamic arrays are pointers, while normal arrays are blocks of memory. With one dimensional arrays, you can use the address of the array. But with multi dimensional arrays this trick won't work.

In your case, I would use a file to initialize the array. So you can use dynamic arrays 100% of the time. Else you have to write your own conversion which kind of defeats the purpose of dymanic arrays.

like image 1
Toon Krijthe Avatar answered Nov 07 '22 03:11

Toon Krijthe