Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 16:38   #1
Evgen1503
Пользователь
 
Регистрация: 02.05.2009
Сообщений: 42
По умолчанию Что можно использовать вместо динамических массивов.

Что можно использовать вместо динамических массивов. Дело в том что я во время работы программы открываю каталоги ищу файлы по заданной маске и зписываю их в массив, колличество элементов достаточно большое около 20000. Выделение помять занимает очень много времени. Что можете предложить.
Evgen1503 вне форума Ответить с цитированием
Старый 14.01.2010, 16:48   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

линейные списки, можно и двусвязные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.01.2010, 16:48   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

если используется SetLength(mas, len+1)
то выделить память ОДИН раз но много SetLength(mas,len+10000)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 14.01.2010, 17:00   #4
Evgen1503
Пользователь
 
Регистрация: 02.05.2009
Сообщений: 42
По умолчанию

Дело в том что я проверяю каждую строчку файла на условие, если подходит то записываю в массив.
Evgen1503 вне форума Ответить с цитированием
Старый 14.01.2010, 17:20   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

пишите в filestream.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.01.2010, 17:33   #6
Evgen1503
Пользователь
 
Регистрация: 02.05.2009
Сообщений: 42
По умолчанию

Спасибо за ответы, нужно будет почитать про линейные списки, не приходилось работать.
Evgen1503 вне форума Ответить с цитированием
Старый 14.01.2010, 18:19   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Оно правильно называется "связанные списки", в делфях уже есть неплохая реализация, завёрнутая в класс TList
пыщь
JTG вне форума Ответить с цитированием
Старый 14.01.2010, 18:44   #8
_bAd_
Пользователь
 
Регистрация: 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.
_bAd_ вне форума Ответить с цитированием
Старый 14.01.2010, 21:54   #9
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от _bAd_ Посмотреть сообщение
Извини, но рекомендую обратить внимание на пост evg_m
Переменная S := 0;
1 - Выделяешь 10000.
2 - Проверяешь каждую строчку файла на условие, если подходит то записываешь в массив.
3 - Увеличиваешь переменную S. Если она достигла (Length(array)-1), то
3.1 Setlength(array, length(array)+10000);
В конце, если сильно жмёт, можно сделать
Setlength(array, S);

Ано палюбэ быстрее получиццо чем любой другой способ
Ну так лучше тогда использовать TList, он как раз по такому алгоритму и работает. Ему сразу можно указать Capacity перед обработкой файлов.
maxionans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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