Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.061 c
15-1197883093
начинающий
2007-12-17 12:18
2008.01.20
Плазма белый отдаёт лиловым. Но не весь.


1-1192534195
Se1lor
2007-10-16 15:29
2008.01.20
Image и регионы


11-1182610524
=BuckLr=
2007-06-23 18:55
2008.01.20
OnChar


6-1178818725
Beks
2007-05-10 21:38
2008.01.20
програмно ввести в строку определенное значение


8-1172775788
Radgar
2007-03-01 22:03
2008.01.20
Громкость





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский