|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.01.2010, 16:38 | #1 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 42
|
Что можно использовать вместо динамических массивов.
Что можно использовать вместо динамических массивов. Дело в том что я во время работы программы открываю каталоги ищу файлы по заданной маске и зписываю их в массив, колличество элементов достаточно большое около 20000. Выделение помять занимает очень много времени. Что можете предложить.
|
14.01.2010, 16:48 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
линейные списки, можно и двусвязные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
14.01.2010, 16:48 | #3 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
если используется SetLength(mas, len+1)
то выделить память ОДИН раз но много SetLength(mas,len+10000)
программа — запись алгоритма на языке понятном транслятору
|
14.01.2010, 17:00 | #4 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 42
|
Дело в том что я проверяю каждую строчку файла на условие, если подходит то записываю в массив.
|
14.01.2010, 17:20 | #5 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
пишите в filestream.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
14.01.2010, 17:33 | #6 |
Пользователь
Регистрация: 02.05.2009
Сообщений: 42
|
Спасибо за ответы, нужно будет почитать про линейные списки, не приходилось работать.
|
14.01.2010, 18:19 | #7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Оно правильно называется "связанные списки", в делфях уже есть неплохая реализация, завёрнутая в класс TList
пыщь
|
14.01.2010, 18:44 | #8 |
Пользователь
Регистрация: 11.01.2010
Сообщений: 21
|
Извини, но рекомендую обратить внимание на пост evg_m
Переменная S := 0; 1 - Выделяешь 10000. 2 - Проверяешь каждую строчку файла на условие, если подходит то записываешь в массив. 3 - Увеличиваешь переменную S. Если она достигла (Length(array)-1), то 3.1 Setlength(array, length(array)+10000); В конце, если сильно жмёт, можно сделать Setlength(array, S); Ано палюбэ быстрее получиццо чем любой другой способ Это что за "удаффки" ? Получаем пинок... Модератор Последний раз редактировалось mihali4; 14.01.2010 в 20:14. |
14.01.2010, 21:54 | #9 | |
Форумчанин
Регистрация: 02.01.2010
Сообщений: 254
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Title на форме. Как можно перерисовать caption на form? Или убрать его и вместо использовать картинки | Шульц | Общие вопросы Delphi | 37 | 02.10.2010 09:46 |
Delphi передача динамических массивов | world12_tk | Помощь студентам | 7 | 23.12.2009 21:06 |
ФАЙЛЫ И ЗАПИСЬ В НИХ ДИНАМИЧЕСКИХ МАССИВОВ | aka_Kiss | Общие вопросы C/C++ | 4 | 09.11.2009 00:43 |
обработка динамических массивов | funky | Помощь студентам | 0 | 11.05.2009 17:53 |
C++. Объявление динамических массивов. | Парсифаль | Помощь студентам | 27 | 03.05.2009 23:21 |