Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Динамические списки в Delphi

Ответить
Настройки темы
Delphi - Динамические списки в Delphi

Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


Хм, возможно, я неправильно употребил словосочетание "динамические списики"? Вопрос(ы) в следующем:
1. Как работает тип TstringList в TListBox'e и подобные им списки/массивы переменной длины?
2. Файлы файлов объявлять низзя - это понятно, а можно ли создать такой вот "динамический список" из "динамических списков", или объектов, их включающих? Например, массив динамического размера, содержащим ListBox'ы(что можно работать с указателями - это понятно, но можно ли по-другому?)...
3. Может, кто-нить обьяснит, как сделать MDI - как в Word'e, например, или в Опере, чтобы не лимитировалось явно количество дочерних окон? Или, опять же, обязательно надо работать с массивом указателей и при создании нового окна делать New для нового элемента массива? А как же тогда обрабатывать событие нажатия на клавишу на N-ом окне? Как процедуры писать?

Отправлено: 23:56, 24-11-2004

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


1. Не совсем понимаю вопрос. Просто работает. Точно также, как и самый простой CList
2. Можно. Только не запутайтесь в указателях на указатели и грамотно очищайте память.
3. Емнип, никакого лимита в MDI приложениях по умолчанию нет. Что касается обработки сообщений, то тут всё просто. Внутри рабочей области окна все действия будут порождать события для этого конкретного окна. Если эти события не обрабатываются самим окном (дочерним), они передаются родителю (МDI-папе). Вкратце так.
Поправьте, если ошибаюсь.

Отправлено: 11:52, 25-11-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


hasherfrog, указатели на указатели?
А можно - поточнее?

Отправлено: 11:55, 27-11-2004 | #3


Аватара для Zippy

Старожил


Сообщения: 278
Благодарности: 2

Профиль | Отправить PM | Цитировать


Новичёк
есть у нас, например, 10 указателей на соответственно 10 списков, почему бы не составить еще один список, элементами которого будут эти 10 указателей...

Отправлено: 01:20, 03-12-2004 | #4


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Новичёк
Добавлю к сказанному Zippy
Сам список организован на указателях. Все эти аппенды, инсёрты, реплэйсы, перемещение внутри списка - по сути работа с указателями на области памяти, в которых лежат данные элементов.

Отправлено: 09:05, 03-12-2004 | #5

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


1. Если есть возможность использовать STL, используйте list<...>. Там уже всё учтено (если, конечно то, что в угловых скобках грамотно написано, т.е. имеет конструкторы и деструктор). В делфи 5 и далее есть динамический массив, основанный на особенности выделения страничной памяти в Windows. Задаётся размер адресного пространства, занимаемый массивом и защищается NO_ACCESS. При попытке записать в защищённую память она автоматически выделяется.

2. Например list<list<list<double> > >. Непонятно, зачем это может понадобиться, тем не менее - это дин.спис. из дин.спис. из дин.спис. из вещественных.
В STL в любом контейнерном классе есть возможность расти в объёме. Можно наример сделать так:
Код: Выделить весь код
void foo() {
   vector<auto_ptr<TListBox> > listboxes;
   listboxes.resize(10);
   for(int i=0; i<listboxes.size(); i++) listboxes[i].reset(new TListBox);

   listboxes.resize(20);
   for(int i=10; i<listboxes.size(); i++) listboxes[i].reset(new TListBox);
}

...
foo();
// здесь все listbox-ы самоуничтожатся
// указателей на указатели не используется
// выгодно для доступа, но тормозит при добавлении и удалении в середине списка

Отправлено: 10:57, 14-12-2004 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Динамические списки в Delphi

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Динамические списки php+AJAX + Mysql dominion86 Программирование и базы данных 1 18-12-2008 01:12
Delphi - C++Builder/Delphi | Ниспадающие списки Sir Z Программирование и базы данных 1 07-05-2007 13:02
C/C++ связные списки, наверно stavskiys Программирование и базы данных 2 24-01-2007 14:30
списки slaine Вебмастеру 5 19-01-2006 19:08
Сокращенные списки Surround Microsoft Windows 95/98/Me (архив) 1 30-10-2003 08:40




 
Переход