![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение размера динамического массива [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);