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

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

Про динамический массив [D7, WinXP]


Дмитрий_177 ©   (2005-12-21 12:00:00) 

Есть массив:


Mas: array of TStrings;


Элементы создаются по ходу программы, т.к. колличество элементов в нем не известно, приходится каждыйраз задавать его размер:


SetLength(Mas, Length(Mas) + 1);
Mas[Length(Mas) - 1] := TStringList.Create;


Я не пробовал еще, но надеюсь элементы будут только добавляться... А те элементы которые были останутся без изменения.
А вот как удалить какой-нибудь элемент такого массива? например Mas[10] ?

При завершении программы я удаляю такой массив так: Finalize(Mas); тут тоже у меня небольшой вопросик, при его удалинии в памяти не останутся все элементы массива? т.е. не надо делать так: Mas[i].Free; в цикле?


evvcom   (2005-12-23 09:30:00) [1]


> Дмитрий_177  
> Дмитрий_05  

Ты чего? Шифруешься? Или клонируешься?


Officeman   (2005-12-22 23:03:00) [2]

весьма популярно объяснил. вроде по логике всё верно.


з. танька   (2005-12-22 22:04:00) [3]

TStringList(ObjList.Items[i])


Дмитрий_177   (2005-12-22 21:20:00) [4]

А чтобы обратиться к какойнибудь строке из TObjectList, т.е. чтобы извлечь список(TStringList) из элемента TObjectList, надо как делать?

var
ObjList: TObjectList;

TStringList(ObjList.Items[i])
или так
ObjList.Items[i]
?

Дмитрий_05 это я ))) ошибся числом )))


Дмитрий_05   (2005-12-22 20:12:00) [5]

Долго объяснять :))) Вобщем я делаю такую программу, которая создает скины к моим программам, но я делаю ее универсальной для всех моих программ, чтобы для каждой можно было создать скин... ))) Там как бы для каждой программы создаю "образ скина" так сказать... и потом по этому "образу" программа генерирует форму для создания скина, там выбора изображений и т.д... Вот какраз в форме(модуле) создания образа мне и нужен такой массив, там вобщем устроено так: есть список форм(TStringList), а к каждой строке этого списка принадлежит еще один список, "параметров формы" ))) но т.к. количество форм и параметров неизвестно сколько создаст "пользователь", то и не известно сколько нужно создавать списков параметров... вот я и создаю по ходу добавления формы в список еще в массиве список параметров, может это чудной алгоритм и делается это немного подругому, но я придумал только это )))


Officeman   (2005-12-21 22:58:00) [6]

Дмитрий_177, если несекрет.  где может использоватся массив такой структуры? хоть по аналогии скажи.


TUser   (2005-12-21 21:07:00) [7]

Еще можно менять удаляемый элемент местами с последним, удалять его, и потом - SetLength на минус 1.


Дмитрий_177   (2005-12-21 20:27:00) [8]

Да, чтоб без дыр было...))) Я TObjectList попробую, правда не пользовался им никогда...


evvcom   (2005-12-21 13:32:00) [9]

А ты уверен, что тебе нужен массив списков?

> но надеюсь элементы будут только добавляться

Да, так и будет.

> А вот как удалить какой-нибудь элемент такого массива? например
> Mas[10] ?

А тебе обязательно нужно, чтобы не было дыр? Если с дырами, то
Mas[10].Free;
Mas[10] := nil;


alex_***   (2005-12-21 12:42:00) [10]

TObjectList не пробовал пользовать? перед разрушением дин. массива надо давать Mas[i].Free; в цикле


Наверх

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