Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.033 c
2-1130156596
XfroSt
2005-10-24 16:23
2005.11.13
Работа с датой


6-1122973910
stud
2005-08-02 13:11
2005.11.13
idHTTP настройки прокси


2-1129712316
Perf2k2
2005-10-19 12:58
2005.11.13
Всем снова привет - проблема с Query


14-1129919991
Gero
2005-10-21 22:39
2005.11.13
Загрузчик сайтов


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский