![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не передается динамический массив в функцию
renex © (2008-10-01 15:23:00)Не получается назначить размер массиву в функции,
функция объявлена как MyFunction(perem:integer;var MyArr:array of string):integer;
при вызове неизвестно сколько значений должен содержать в себе массив,
это узнается в теле функции в зависимости от параметра perem, количество узнается count_values, но при попытке вставить SetLength(MyArr,count_values) в тело функции коппилятор выдает "incompatible types"
Юрий Зотов (2008-10-01 19:51:00) [1]> [3] renex © (01.10.08 16:28)
> а что эффективнее и удобнее, указатели или дин. массивы?
Переменная или параметр типа "динамический массив" - это тоже указатель, даже и без var. Так что по эффективности - одно и то же, а по удобству - динамический массив.
@!!ex (2008-10-01 19:40:00) [2]> [3] renex © (01.10.08 16:28)
> а что эффективнее и удобнее, указатели или дин. массивы?
> ??
var перед параметром уже говорит о том, что массив передан как указатель.
на [2] внимания не обращай в данном случае заявление не в тему.
Если есть возможность пользовать var вместо указателей, лучше пользуй var - легче с кодом разобраться будет.
renex (2008-10-01 16:28:00) [3]Спасибо за ответы, заработало когда правильно объявил динамический массив
а что эффективнее и удобнее, указатели или дин. массивы???
скиньте пож-та ссылок где можно почитать про указатели
Труп Васи Доброго (2008-10-01 16:14:00) [4]А указателями пользоваться тебе западло или как?
Григорьев Антон (2008-10-01 15:27:00) [5]Это у вас не динамический массив получается, а открытый, т.е. такой параметр, куда можно подставить любой подходящий по типу массив статический или динамический. А раз там может оказаться статический массив, то и менять длину в общем случае нельзя. Чтобы параметр был не открытым, а динамическим массивом, надо заранее объявить нужный тип и использовать его:
type
TStringDynArray = array of string;
MyFunction(perem:integer;var MyArr:TStringDynArray):integer;