Вот здесь делаю одномерный массив объектом:
Модуль (Показать/Скрыть)
Программа (Показать/Скрыть)
Column := TColumn.Create;и наслаждайся
Constructor TColumn.Create;
begin
Inherited Create;
for i := 1 to N do Col[i] := TCol.Create;
end;
TYac = {object}class
private
Znac:integer;
public
property Value:integer read Znac write Znac;
end;
function TColumn.GetZnac(i:integer):integer;
begin
result := Col[i].Value;
end;
procedure TColumn.PutZnac(i,z:integer);
begin
Col[i].Value := z;
end;
constructor TColumn.Create;
var i:integer;
begin
inherited;
for i:=1 to N do
Column[i]:=TYac.Create;
end;
type
TCell = class
private
fValue:integer;
function GetValue:integer;
procedure PutValue(v:integer);
published
property Value:integer read GetValue write PutValue;
end;
implementation
function TCell.GetValue:integer;
begin
result:=Value;
end;
procedure TCell.PutValue(v:integer);
begin
Value:=v;
end;
end.
function GetValue:integer;
procedure PutValue(v:integer);
function TCell.GetValue:integer;
begin
result:=fValue; // <-- У тебя был бесконечный рекурсивный вызов самого себя
end;
procedure TCell.PutValue(v:integer);
begin
fValue:=v; // <--- Аналогично
end;
function TFunc.Mult(a,b:TMatr;N:byte):TMatr;
var
i,j,s:byte;
v:integer;
begin
result := TMatr.Create; // <--- Вот это за тебя кто делать будет?
for i:=1 to N do
for j:=1 to N do
begin
v:=0;
for s:=1 to N do
begin
inc(v,a.Row[i].Column[s].Value*b.Row[s].Column[j].Value);
result.Row[i].Column[j].Value:=v; // <--- Чего тут у тебя не работало, говоришь?
end;
end;
end;
function TFunc.Mult(a,b:TMatr;N:byte):TMatr;
var
i,j,s:byte;
v:integer;
begin
result := TMatr.Create;
for i:=1 to N do
for j:=1 to N do
begin
v:=0;
for s:=1 to N do
begin
// inc(v,a.Row[i].Column[s].Value*b.Row[s].Column[j].Value); // <---вот это
inc(v,a[i][s].Value*b[s][j].Value); // <--- Может выглядеть так
result[i][j].Value:=v; // <---
end;
end;
end;
property Column[j:integer]:TCell read GetCell write SetCell; default;