![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с массивом
nikolas © (2005-10-19 17:43:00)Добрый день!
Есть тип TMyArray = array[0..n] of TObject;
объявляю в классе поле:
type
TMyClass = class
private
FMyArray: TMyArray;
public
property MyArray: TMyArray read FMyArray;
end;
когда пытаюсь обратится к элементу
MyArray[0]:=TObject.Create... получаю ошибку "left side cannot be assigned to".
Что здесь неправильно?
umbra (2005-10-19 17:55:00) [1]1) Вы объявили свойство, доступное только для чтения. Чтобы иметь возможность что либо ему присвоить оно должнобыть объявлено как доступное для чтения и записи. А чтобы получить доступ к элементам массива, это должно быть свойство-массив. В общем, объявлять надо так:
property MyObj[index: Integer]: TObject read GetElement write SetElement;
А затем в процедурах GetElement и SetElement что-то делать с FMyArray
begin...end (2005-10-19 17:53:00) [2]> nikolas (19.10.05 17:43)
Тип свойства MyArray -- TMyArray. Это массив. Значит, этому свойству можно присвоить значение только целого массива типа TMyArray. И только в том случае, если оно не read-only.
Выход -- например, сделать индексированное свойство (понадобится ещё написать методы для чтения и записи поля).
Хотя, в принципе, есть способ сделать почти так, как делаете Вы. Но так лучше не делать.
MetalFan (2005-10-19 17:47:00) [3]а попробуй не TObject.Create, а TMyClass.create написать...
TObject это ж вроде абстрактный класс... или я опять гоню? )
MetalFan (2005-10-19 17:45:00) [4]ну ясен пень! у тебя ж пропертя readonly!!
...write FMyArray еще нуна
MetalFan (2005-10-19 17:45:00) [5]упс... гоню...