Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

Создание процедуры - оператора   Найти похожие ветки 

 
Vitaliy   (2005-10-23 07:37) [0]

Доброе время суток!
Что-то не могу понять, как создать в делфи то, что на си бы выглядело так:
double operator[](int Index){}
Конкретизирую проблему. Есть класс (кстати, может его не от TObject надо наследовать...), который должен обеспечивать работу с матрицами. Вот такой:

type TMatrixArray = array of array of double;
type TMatrix = class (TObject)
 MatrixArray : TMatrixArray;
 Max, Min: double;
 Sx, Sy: integer;
 //... Процедуры загрузки обработки и др. методы
end;

Очень хочется чтобы мы могли получать элемент через Matrix[i] и Matrix[i][j].


 
Virgo_Style ©   (2005-10-23 09:20) [1]

попробуй посмотреть directive default, вроде бы оно.


 
Loginov Dmitry ©   (2005-10-23 09:26) [2]

Это вроди этого?:
List: TStringList;
.....
S := List[i];

Посмотри реализацию TStringList


 
Vitaliy   (2005-10-24 07:37) [3]

Посмотрел, может даже и понял.
Заморачиваться не буду :)
Проще сделать поледоступным и обращаться прямо к массиву. Может и не в лучших традициях ООП, но зато проще и работает. Всем спасибо!


 
Kolan ©   (2005-10-24 12:24) [4]

В D7 нет перегрузки операторов...


 
MBo ©   (2005-10-24 13:21) [5]

Прочитай в хелпе об Array properties

>хочется чтобы мы могли получать элемент через Matrix[i] и Matrix[i][j].
Это возможно, но только для одного из вариантов - либо одномерного, лиюо двумерного - путем объявления индексируемого свойства с default


 
GuAV ©   (2005-10-24 22:56) [6]


> Очень хочется чтобы мы могли получать элемент через
> Matrix[i] и Matrix[i][j].


Реализуй Matrix как OLE объект со своей реализацией IDispatch, обрабатывай индексы в IDispatch::Invoke и твори что хочешь  ;-)

PS: навеяно моим недавним вопосом про синтаксис ;)


 
wal ©   (2005-10-25 09:23) [7]


> Очень хочется чтобы мы могли получать элемент через Matrix[i]
> и Matrix[i][j].
Что-то я не понял. Через Matrix[i] мы что должны получить? Если матрица не является вектором, то через одну координату мы можем получить только вектор, а никак не элемент. А если получить нужно именно вектор, то тогда проблем никаких невижу:

type
 TVector = array of double;
 TMatrixArr: array of TVector;

 TForm2 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   function GetVector(I: Integer): TVector;
   { Private declarations }
 public
   { Public declarations }
   property Vector[I: Integer]: TVector read GetVector; default;
 end;

implementation

{$R *.dfm}

function TForm2.GetVector(I: Integer): TVector;
begin
{ToDo}
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
 Caption := FloatToStr(Vector[1][2]);
end;


C уважением.



Страницы: 1 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
2-1129911328
Volf_555
2005-10-21 20:15
2005.11.13
Выделение подстроки из строки


14-1130164522
Igorek
2005-10-24 18:35
2005.11.13
Много ли вы печатаете на работе?


1-1130150894
Nait
2005-10-24 14:48
2005.11.13
Как клонировать кнопку?


14-1130184960
GanibalLector
2005-10-25 00:16
2005.11.13
GPRS, RS232, USB


2-1129620796
T10000
2005-10-18 11:33
2005.11.13
Работа с датой ?