Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

функция, которая возвращает матрицу [D7, Win2k]


Страницы:   1 2

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;

Если с дин. массивами - то не забудь освобождать память.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо