А зачем? Недостаточно просто определить поле M, и в конструкторе ему присваивать какое-то значение?
Смысл этой константы в чем?
Автор: compiler 13.01.2008 1:32
Цитата(volvo @ 12.01.2008 20:25)
А зачем? Недостаточно просто определить поле M, и в конструкторе ему присваивать какое-то значение?
так и сделаю, спасибо...
Цитата(volvo @ 12.01.2008 20:25)
Смысл этой константы в чем?
размер поля массива...
update только при таком подходе необходимо создавать матрицу динамически или не обязательно?
Автор: volvo 13.01.2008 1:58
Скорее всего, другого выхода не будет - для задания размерности статической переменной в любом случае нужна константа (и не типизированная, как ты показал в первом посте, а простая), так что без SetLength не обойтись...
Автор: compiler 13.01.2008 2:01
Цитата(volvo @ 12.01.2008 20:58)
Скорее всего, другого выхода не будет - для задания размерности статической переменной в любом случае нужна константа (и не типизированная, как ты показал в первом посте, а простая), так что без SetLength не обойтись...
спасибо, будем писать... ух уж это ООП:)
Автор: klem4 13.01.2008 22:34
если поле класса - одномерный динамический массив, то хранить его размер вообще не нужно, всегда можно заюзать length.
Автор: compiler 13.01.2008 23:27
Цитата(klem4 @ 13.01.2008 17:34)
всегда можно заюзать length.
я подумал, с инициализирующей переменной будет даже лучше, ибо тогда размер карты можна будет легко изменить в опциях..
Автор: Archon 7.02.2008 16:11
Хоть и старая тема, но можно было сделать property. Например так:
type MyObj = object // Это тестовый объект private Arr: array of integer; // Это наш массив function GetArrLen: byte; procedure SetArrLen(Len: byte); public property ArrLen: byte read GetArrLen write SetArrLen; // Это свойство (property) end;
// При чтении свойства ArrLen будет вызываться эта функция function MyObj.GetArrLen: byte; begin GetArrLen := Length(Arr); end;
// При записи значения в свойство ArrLen будет вызываться эта процедура procedure MyObj.SetArrLen(Len: byte); begin SetLength(Arr, Len); end;
// Пример использования: var M1: MyObj; begin M1.ArrLen := 10; // Задали размер массива Arr равным 10 WriteLn(M1.ArrLen); // Вывели на экран размер массива Arr (10) end.
Автор: compiler 8.02.2008 0:44
Цитата(Archon @ 7.02.2008 11:11)
Хоть и старая тема, но можно было сделать property.