Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В Delphi точно нет конструктора массивов?


Franzy ©   (2009-06-02 15:11:00) 

Запарился уже массивы поэлементно назначать. Знаю, что константу-массив можно объявлять (типа a: array [1..3] of byte = (1,2,3)). А есть ли аналогичные конструкторы для массивов-неконстант? В Фортране можно, например, писать x(5:7) = (/1,2,3/), и тогда 5,6 и 7 элементу массива х будут назначены значения, соответственно, 1, 2 и 3. В Дельфях есть что-нибудь подобное?


QAZ   (2009-06-11 12:29:00) [1]


> А есть ли аналогичные конструкторы для массивов-неконстант?
>  

это должна быть глобальная переменная


Palladin   (2009-06-11 12:18:00) [2]

Хотя сдается мне что ты просто не знаешь Паскаля.

Type
 TAOf3B=Array [1..3] of byte;

Const
 a:TAOf3B = (1,2,3);

var
 x:TAOf3B;
begin
 x:=a;
end;


Palladin   (2009-06-11 12:16:00) [3]


> x[1]:=10;
> x[2]:=2;
> x[3]:=7;

Это - назначение констант. Которое так и оформляется:
Const
x: array [1..3] of byte = (1,2,3)

в чем проблемы?


Franzy   (2009-06-11 12:04:00) [4]

2Германн
Причем здесь лень? Согласитесь, что писать
x=(/10,2,7/)
гораздо удобнее, чем
x[1]:=10;
x[2]:=2;
x[3]:=7;


sniknik   (2009-06-03 10:47:00) [5]

> трудно представить себе задание вручную массива в тысячу элементов
реальность круче всего что можно себе представить...

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1243356829&n=18
> пишит что использовано слишком много констант (примерно так) это ошибка


Sapersky   (2009-06-03 10:35:00) [6]

Чтобы использовать заполненный таким образом массив вне процедуры, куда он передается, надо изрядно поломать голову

Ну я думал, копировать его в другой (динамический, например) массив.
С т.з. производительности, конечно, не блестяще, тем более что открытый массив ещё предварительно заталкивается в стек, но для небольших объёмов (трудно представить себе задание вручную массива в тысячу элементов) приемлемо.


Германн   (2009-06-03 02:38:00) [7]


> Franzy   (02.06.09 15:11)
>
> Запарился уже массивы поэлементно назначать.

Лень матушка!

> MBo ©   (02.06.09 15:32) [3]
>
> процедуру с таким функционалом написать нетрудно
>

И даже очень не трудно. Но нужно "мозгами поворочить". И что-то самому сделать.


Нат   (2009-06-03 02:25:00) [8]

Чтобы использовать заполненный таким образом массив вне процедуры, куда он передается, надо изрядно поломать голову


Sapersky   (2009-06-02 21:01:00) [9]

Для открытых массивов (при передаче в процедуру) есть конструкторы.
Help/Object Pascal(Delphi) Reference/Procedures and functions/Calling procedures and functions/Open array constructors


Лёша   (2009-06-02 15:54:00) [10]

Для динамических есть.

D: TIntegerDynArray;
...

D := TIntegerDynArray.Create(1, 2, 3);

Delphi 2007


MBo   (2009-06-02 15:32:00) [11]

процедуру с таким функционалом написать нетрудно


clickmaker   (2009-06-02 15:26:00) [12]

Разве что для вариантных массивов: VarArrayOf


Palladin   (2009-06-02 15:14:00) [13]

точно


Наверх

Титульная страница Поиск, карта сайта Написать письмо