Форум: "Начинающим";
Текущий архив: 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