Форум: "Начинающим";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
ВнизДвумерный открытый массив как параметр ф-ции Найти похожие ветки
← →
Alex_C (2007-12-18 10:12) [0]Как передать ф-ции массив вида:
A : array of array of Integer ?
При попытке сделать так
pricedure F( A: array of array of Integer );
выходит ошибка.
← →
Сергей М. © (2007-12-18 10:32) [1]Никак.
Да и зачем ?
На то есть дин.массивы.
← →
oldman © (2007-12-18 10:39) [2]берешь текст функции и вставлешь его вместо вызова функции для обработки своего массива.
:)))
← →
@!!ex © (2007-12-18 11:13) [3]опиши тип, и передавай его.
тоесть:
TArray = array of array of Integer;
procedure F( A: TArray );
Должно работать.
← →
Сергей М. © (2007-12-18 11:41) [4]
> @!!ex © (18.12.07 11:13) [3]
Автора интересует именно открытый массив, а не динамический.
← →
@!!ex © (2007-12-18 11:52) [5]эммм... а что такое открытый массив??
← →
Jeer © (2007-12-18 12:06) [6]F1 open array
← →
Сергей М. © (2007-12-18 12:07) [7]Это спец.тип массивов.
В справке есть краткое описание их назначения и синтаксиса/особенностей объявления/использования.
Главное отличие от дин.массивов закл. в том, что открытые массивы "живут" искл-но в стеке и не могут подвергаться модификации в телах подпрограмм, использующих эти массивы.
← →
MBo © (2007-12-18 12:54) [8]Открытый массив-параметр - удобный обобщенный способ передачи динамических массивов, статических массивов любой длины (однако внутри процедуры нумерция с нуля), в том числе и с var или const - модификаторами, а также открытых массивов-конструкторов (в квадратных скобках).
← →
Alex_C (2007-12-18 13:31) [9]Спасибо всем за советы!
Я в общем-то так и предполагал, но хотелось выслушать мнение почтенной публики!
Как я понял из советов Сергей М. и MBo , а также прочнения Дельфовского хелпа, самый почти правильный ваниант предложил @!!ex, хоть и не знал, что такое открытый массив. :)
Надо так:
TArray = array of Integer;
F( A: Array of integer );
← →
Alex_C (2007-12-18 13:32) [10]в смысле F(A: array of TArray);
очепятка вышла :)
← →
MBo © (2007-12-18 13:47) [11]>в смысле F(A: array of TArray);
нет, лучше так, как @!!ex написал
← →
Сергей М. © (2007-12-18 14:20) [12]
> Alex_C (18.12.07 13:31) [9]
Но ведь откуда-то у тебя выплыло требование именно по открытому массиву .. чем-то же , значит, оно было продиктовано ..
Или от балды ляпнул ?)
← →
Alex_C (2007-12-18 16:03) [13]То Сергей М. Может я чего не очень понимаю, но мне в ф-цию надо передать массив, размерность которого не известна заранее. Как написал MBo для этого в качестве параметра используется открытый массив. Именно это я и имел ввиду, и ничего более :)
← →
DiamondShark © (2007-12-18 16:43) [14]Т.е. разницу между открытими и динамическими ты так и не осознал, а лишь бы чего-то передалось.
Так?
← →
Сергей М. © (2007-12-18 16:55) [15]
> Alex_C (18.12.07 16:03) [13]
> размерность которого не известна заранее
Размерность (dimension) открытого массива всегда = 1, т.е. открытый массив м.б. только одномерным.
← →
Alex_C (2007-12-18 19:06) [16]
> DiamondShark © (18.12.07 16:43) [14]
> Т.е. разницу между открытими и динамическими ты так и не
> осознал, а лишь бы чего-то передалось.
> Так?
Выходит , что так.
И вот почему: открываю Стива Тейксейра и Ксавье Пачеко "Borland Delphi4. Руководство разработчика." Стр. 70. Открытый массив.
Цетирую:
Открытый массив дает возможность передавать в функцию или процедуру различное количество параметров. Вы можете передать в качестве параметра открытый массив элементов как одинакового, так и различного типа. Вот пример передачи функции открытого массива целых чисел:
function AddEmUp(A: array of Integer): Integer;
Разве это не то, что я писал в [13]?
И это никак не совпадает с [15].
← →
Alex_C (2007-12-18 19:10) [17]В догонку: открыл Архангельского "Delphi 7 Справочное руководство". Стр. 163. Параметры в виде открытых массивов.
Там прям практически слово в слово написано как у меня в [13]
← →
DiamondShark © (2007-12-18 19:44) [18]
> Alex_C (18.12.07 19:06) [16]
> Alex_C (18.12.07 19:10) [17]
Ну, тогда из прочитанного ты должен был уяснить что:
1. Двумерных открытых массивов не бувает.
2. Конструкции
а) procedure P(A: array of integer);
б)type TA=array of integer;
procedure P(A: TA);
в)type TA=array of array of integer;
procedure P(A: TA);
г)type TA=array of integer;
procedure P(A: array of TA);
представляют собой принципиально разные вещи, и никакая пара из них не содержит и намёка на эквивалентность.
а) -- открытый массив
б) -- динамический массив
в) -- динамический массив динамических массивов (это НЕ двумерный массив )
г) -- открытый массив динамических массивов
← →
Сергей М. © (2007-12-19 08:32) [19]
> различное количество параметров
> это никак не совпадает с [15].
Одно другому никак не противоречит.
"различное количество параметров" в дан.случае - это произвольно задаваемая длина массива (точнее - число его элементов) в некоем конкретном его измерении (размерности, если угодно).
Открытый массив всегда одномерный (т.е. имеет одно измерение, или, если угодно, размерность такого массива = 1)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.047 c