Nugroho's blog.: Playing (again) with 'Home Made' Vector in Delphi

## Friday, December 5, 2014

### Playing (again) with 'Home Made' Vector in Delphi

Here it is. I create a vector as new type, which is in itself is three dimension array.

Then I declared u as vector with three dimension;
u (h,i,j)

where h = 0, 1, 2  as physical component (eg: height, velocity, momentum)
i , j = 0, 1, 2, ..., n as row n column

So if we read u[0,1,1], it means height value at coordinate (1,1); u[1,1,1] is the velocity value; [2,1,1] is the momentum value at the same coordinate.

Trying some of properties of it. I found out that we can initialize all component of vector-u with this one line code

`u:=fu(h[i,j],i,j);`

so the component u(h,i,j) will filled. Notice that the function has vector (or in this case array) return value.

The code below show how I fill the value of component u(0, i, j)

`unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;const n=3;type vector=array[0..2,0..n,0..n]of real;type  TForm1 = class(TForm)    Button1: TButton;    Memo1: TMemo;    function fu(a:real;i,j:integer):vector;    procedure FormCreate(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{\$R *.dfm}function tform1.fu(a:real;i,j:integer):vector;begin  fu[0,i,j]:=a;end;procedure TForm1.FormCreate(Sender: TObject);var i,j:integer;h:array[0..n,0..n]of real;u:vector;begin  for i:=0 to n do begin    for j:=0 to n do begin       h[i,j]:=1;       u:=fu(h[i,j],i,j);    end;  end;  memo1.Text:='';  memo1.Lines.Append('h[1,1]='+floattostr(h[1,1]));  memo1.Lines.Append('u[0,1,1]='+floattostr(u[0,1,1]));  memo1.Lines.Append('u[0,2,1]='+floattostr(u[0,2,1]));end;end.`
:)