Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.20;
Скачать: CL | DM;

Вниз

Двумерный открытый массив как параметр ф-ции   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
2-1197971940
Indigo
2007-12-18 12:59
2008.01.20
Частотный букварь текста


10-1141419809
DillerXX
2006-03-04 00:03
2008.01.20
IWebBrowser2 и FTP


1-1192715378
Still Swamp
2007-10-18 17:49
2008.01.20
Мои Messages


15-1197603524
Slider007
2007-12-14 06:38
2008.01.20
С днем рождения ! 14 декабря 2007 пятница


15-1197836618
Berkut
2007-12-16 23:23
2008.01.20
Постановка инженерной задачи по "Дихотомии"/"Хорд"