Главная страница
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.048 c
5-1108826527
Dmitry_04
2005-02-19 18:22
2005.11.13
Как сделать компонент невидимим при клике по нему?


14-1129748171
iZEN
2005-10-19 22:56
2005.11.13
Опавшие листья собирать в мусорные мешки: бред или реальность?


2-1130224792
Quest
2005-10-25 11:19
2005.11.13
Работа с Формами


4-1124876130
Scordion
2005-08-24 13:35
2005.11.13
Как сделать форму поверх всех приложений?


1-1130076984
Эксперт
2005-10-23 18:16
2005.11.13
А как сделать скролинг для TPanel как в TabControl?