Форум: "Основная";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
Внизразмер массива через указатель Найти похожие ветки
← →
Zoom © (2010-03-19 22:20) [0]Подскажите пожалуйста как определить размер массива
ar_1: array[1..3] of word = ( 1,2,3);
ar_2: array[1..5] of word = ( 1,2,3,4,5);
ar_3: array[1..7] of word = ( 1,2,3,4,5,6,7);
ar: array[1..3] of array of word = (@ar_1, @ar_2, @ar_3);
как узнать размер ar[1] не обращаясь к ar_1 ?
length (ar[1] ) - показывает 4525424, а надо чтоб было 3...
или как по другому можно сделать массив массивов с разной длинной , но чтоб потом можно было узнать длину каждого из них ?
← →
Loginov Dmitry © (2010-03-19 23:04) [1]
> ar: array[1..3] of array of word = (@ar_1, @ar_2, @ar_3);
Это что за чушь?
← →
Loginov Dmitry © (2010-03-19 23:08) [2]
> или как по другому можно сделать массив массивов с разной
> длинной , но чтоб потом можно было узнать длину каждого
> из них ?
Используй динамические массивы.
Объявление: Ar: array of [array of] DataType
Установка размеров: SetLength()
Определение размеров: Length()
← →
Zoom © (2010-03-19 23:19) [3]
> Это что за чушь?
>
В смысле ? это не чушь, а двумерный массив с переменной длиной :)
ar[1][2] покажет 3 элемент ar_1
ar[3][4] покажет 5 элемент ar_3
так немного ближе к замыслу :)
ar_1: array[0..2] of word = ( 1,2,3);
ar_2: array[0..4] of word = ( 1,2,3,4,5);
ar_3: array[0..6] of word = ( 1,2,3,4,5,6,7);
ar: array[1..3] of array of word = (@ar_1, @ar_2, @ar_3);
← →
Zoom © (2010-03-20 00:01) [4]Loginov Dmitry
Ну а так я могу объявить двумерный массив ?
ar: array[1..3] of array of word;
///
SetLength (ar[1],length(ar_1));
SetLength (ar[2],length(ar_2));
SetLength (ar[3],length(ar_3));
и как тогда скопировать средствами самой дельфи без "for" ar_1 в ar[1] ?
move ( ar_1, ar[1], length(ar_1));
что-то не получается при выходе из программы runtime 216 ...
← →
Германн © (2010-03-20 01:40) [5]
> move ( ar_1, ar[1][0], length(ar_1));
← →
Вася (2010-03-20 09:33) [6]Не надо так организовывать программу -
"двумерный массив с переменной длиной :)".
Потому что понять потом, что в ней происходит, будет крайне трудно. А также крайне трудно будет искать ошибки типа move (ar[1]. А ошибок подобного рода будет много
← →
Zoom © (2010-03-21 22:34) [7]Германн, спасибо!
только вместо length нужно SizeOf ! чтоб копировать не математическую длину а физическую... например при использовании length для word копируется только половина массива...
Вася, иногда нужен экстрим, жизнь заставляет помните как коровка в национальной рыбалке (охоте) раскорячилась, о то, сам понимаю что так нельзя, а что делать... :)
← →
Германн © (2010-03-22 01:28) [8]
> Zoom © (21.03.10 22:34) [7]
>
> Германн, спасибо!
> только вместо
Не за что.
Я лишь указал причину ошибки 216. Надеюсь что ты понял её. А то что другие ошибки кода ты нашёл сам, то это очень хорошо.
← →
Anatoly Podgoretsky © (2010-03-22 08:52) [9]
> размер ar[1]
размер ar[1] всегда равен SizeOf(Word)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c