Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение размера динамического массива [D6, Win2k]


Сатир ©   (2002-06-17 23:31:00) 

Помогите, кто знает, а то самому дольше вникать:-(
есть двумерный динамический массив типа
TSelectedCells = array of array of TRVTableCellData;

var SelectedCells:TSelectedCells;


Как с помощью метода SetLength() определить размер этого массива,
если известно, что у него RowOffs - рядов, ColOffs-столбцов?

Заранее благодарен.


MBo   (2002-06-18 14:04:00) [1]

количество элементов, high будет на 1 меньше, т.е.
аналог a[0..1,0..2]


Сатир   (2002-06-18 13:51:00) [2]

2MBo ©
и ещё вопрос по сабжу: в методе setlength(a,2,3);
2 и 3 - это количество элементов или номер максимального индекса?


Сатир   (2002-06-18 13:07:00) [3]

а если у меня создается свойство этого типа, напр.,

TSelectedCells = array of array ofTRVTableCellData;
...
private
FCurrentSelection:TSelectedCells;
...
public
...
propertyCurrentSelection: TSelectedCells read
FCurrentSelection writeFCurrentSelection;

и когда в другом модуле я объявляю

iftable.GetSelectionBounds tartRow,StartCol,RowOffs,ColOffs)
thenSetLength(CurrentSelection, RowOffs, ColOffs);
то компилер плюётся таким макаром:
Constant object cannot be passed as var parameter :-((

может нужно написать методы для чтения и записи этого свойства?


GrEG   (2002-06-18 09:46:00) [4]

Точно, не надо. High - возвращает индекс старшего элемента массива. И вообще, использование Low, High более предпочтительно, кто его знает, что в дальнейшем разработчикам в голову придет.


MBo   (2002-06-18 08:08:00) [5]

>Bsl
ты неправ, -1 не надо


Bsl   (2002-06-18 07:46:00) [6]

Первый вариант предпочтительней, но
for i:=0 to High(SelectedCells)-1 do
и далее по тексту


MBo   (2002-06-18 07:32:00) [7]

вторая слева кнопка - F1 вызывает хелп.

var a:array of array of integer;

setlength(a,2,3);



kull   (2002-06-18 01:33:00) [8]

Я думаю

SetLength(SelectedCells,L1)

а дальше по каждому элементу

for i:=Low(SelectedCells) to High(SelectedCells) do
SetLength(SelectedCells[i],L2);


Наверх

Титульная страница Поиск, карта сайта Написать письмо