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

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

Присвоить массив


ply ©   (2011-12-28 12:13:00) 

Как присвоить динамическому массиву определенные значения

так не дает:
var a: array of string;
...
a:=['один','два'];


OW   (2011-12-29 17:29:00) [1]


> Юрий Зотов ©   (29.12.11 16:58) [12]

шутка юмора? (я сегодня[зачеркнуто] туповат :))


Юрий Зотов   (2011-12-29 16:58:00) [2]


> Ega23 ©   (29.12.11 10:24) [11]

Простой, прозрачный, понятный и компактный сишный код на Фортране.


Ega23   (2011-12-29 10:24:00) [3]


> Спасибо. Надеялся что можно как-то обойтись одной строчкой


Не надо пихать в одну строчку то, что делается двумя, но понятно.
А то потом такие уродцы возникают:

with SomeCollection.AddItem(TSomeCollectionItem.Create(dmMain.SomeDataSet.FieldByName ('SomeField').AsInteger)) do
 DoSomething;


Palladin   (2011-12-29 10:02:00) [4]

с XE вроде документированный


MBo   (2011-12-28 13:45:00) [5]

Есть способ, но недокументированный, не во всех дельфях может работать, Error Insight на него ругается. Сам использую только для тестовых вещей.


type
 TStringArray = array of string;
var
 a: TStringArray;
...
a := TStringArray.Create('один', 'два');


Anatoly Podgoretsky   (2011-12-28 13:44:00) [6]

> ply  (28.12.2011 13:22:06)  [6]

Можно - напиши процедуру


Сергей М.   (2011-12-28 13:35:00) [7]


> Надеялся что можно как-то обойтись одной строчкой


Одной никак.
Но можно двумя, если тип элементов массива относится к базовым и фундаментальным типам данных, к коим string не относится.


ply   (2011-12-28 13:22:00) [8]

Спасибо. Надеялся что можно как-то обойтись одной строчкой


Ega23   (2011-12-28 13:01:00) [9]


> var a: array of string;
> ...
> a:=['один','два'];
>


var
 a: array of string;
begin
 SetLength(a, 2);
 a[0] := 'Один';
 a[1] := 'Локи';
end;


Anatoly Podgoretsky   (2011-12-28 12:40:00) [10]

> ply  (28.12.2011 12:13:00)  [0]

Используй индексы

F1 + Dynamic arrays


И. Павел   (2011-12-28 12:26:00) [11]

> [0] ply ©   (28.12.11 12:13)

Как вариант — напишите функцию, которая принимает первым аргументом динамический массив а вторым — вариантный массив (array of const). На вход функции подавайте массив «a» и открытый конструктор ([..., ..., ... и т.д.]), а внутри функции присваивайте элементам массива значения в цикле. Если массивов array of string много и всех их нужно инициализировать константами, то получится какая-то экономия кода.


Сергей М.   (2011-12-28 12:20:00) [12]

поэлементно.


Медвежонок Пятачок   (2011-12-28 12:20:00) [13]

не дает потому что массив не может принять значение не массива.


Наверх

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