![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
функция, которая возвращает матрицу [D7, Win2k]
Andarko © (2005-05-25 18:51:00)Как написать функцию, которая возвращала бы матрицу(по определенному алгоритму) и не ругалась бы!
alertus (2005-05-25 19:12:00) [21]Код из моей рабочей программы, заодно может кто-нибудь поправит:
TMatrix = class(TObject)
private
w:integer; //ширина матрицы
h:integer; //высота матрицы
elem:array of array of real; //массив элементов матрицы
public
constructor Create(wset,hset:integer); virtual;
destructor Destroy; override;
function GetElem(i,j:integer):real;
procedure SetElem(i,j:integer;r:real);
function GetWidth:integer;
function GetHeight:integer;
end;
....
function FillMatrix(wset,hset:integer;r:real):TMatrix; //Заполняет матрицу числом r
var
i,j:integer;
begin
result:=TMatrix.Create(wset,hset);
for i:=1 to result.w do begin
for j:=1 to result.h do begin
result.SetElem(i,j,r);
end;
end;
end;
Marser (2005-05-25 19:08:00) [22]Под Result(то бишь MyTrans) память не выделена.
Andarko (2005-05-25 19:06:00) [23]>begin...end © (25.05.05 19:03) [5]
>> Andarko © (25.05.05 18:59) [4]
>А матрица обязательно динамическая? Статическая не подойдёт?
Подойдет, хоть это и не желательно
begin...end (2005-05-25 19:03:00) [24]> Andarko © (25.05.05 18:59) [4]
А матрица обязательно динамическая? Статическая не подойдёт?
Andarko (2005-05-25 18:59:00) [25]function My_Trans(m1:mas2D):mas2D;
var i,j:integer;
m:mas2D;
begin
SetLength(m,N,N);
for i:=0 to N-1 do
for j:=0 to N-1 do m[i,j]:=m1[j,i];
My_Trans:=m;
m:=nil;
end;
вот после использования этой функции далее по
коду проги идет такая операция
Setlength(Evec1,N,N);
где Evec1 - пустой динамический массив
на этой строке выдает ошибку EAcessViolation
Буду очень признателен, если скажете в чем дело и как надо делать такие функции
begin...end (2005-05-25 18:55:00) [26]> TUser © (25.05.05 18:52) [1]
> type
> TMatrix = array of array of integer;
>
> function GetMatrix: TMatrix;
Ты бы эта... Код рабочий привёл. Для возвращения дин. массива из функции.
VMcL (2005-05-25 18:54:00) [27]>> TUser © (25.05.05 18:52) [1]
> Если с дин. массивами - то не забудь освобождать память.
С этого места поподробнее.
TUser (2005-05-25 18:52:00) [28]type
TMatrix = array of array of integer;
function GetMatrix: TMatrix;
begin
end;
Если с дин. массивами - то не забудь освобождать память.