|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.02.2018, 16:16 | #1 |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
Сортировка файла Delphi XE4
Сортировка файла выдает out of memory, как ускорить функцию ?
Код:
|
24.02.2018, 18:29 | #2 |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
Если файл большого объема, то в целом подход должен быть иной. В примере кода в TStringList (ALL) грузим файл..если он солидного рамерах..Out Of Memory может выпасть уже там....если,он не выпал на этом тапе...то мы продолжаем увеличивать объем потребляемой памяти создав F1,f2,f3 дублируя туда данные из All. Исправить Out Of memory можно - удалив из ALL,то что вставили в f1-f3 при условии что памяти хватило загрузить файл в ALL, если нет..то нужно либо Mapping либо на край TSringStrem.
Ускорить тут не получится..быстрее читать с TstringList ПК не станет. Высокая скорость чтения у TStreamReader
Пишу много и развернуто
Последний раз редактировалось Heneken87; 24.02.2018 в 18:43. |
24.02.2018, 18:47 | #3 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Код:
программа — запись алгоритма на языке понятном транслятору
|
24.02.2018, 19:16 | #4 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Для таких целей лучше использовать базу данных.
На вашем примере чтобы не было проблем с памятью для работы с большими файлами, можно работать сразу со строками этого файла без загрузки его в память. К примеру переделанный ваш код: Код:
Зайдите в Delphi в меню Tools -> EditorOption в закладке General в UndoLimit поставьте значение больше. Последний раз редактировалось Aliens_wolfs; 24.02.2018 в 19:56. |
24.02.2018, 20:01 | #5 |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
Heneken87, evg_m, Aliens_wolfs, Ребята спасибо большое за такую развернутую информацию, все получилось отлично.
|
24.02.2018, 22:09 | #6 |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
И еще вопрос: почему выскакивает ошибка в коде от Aliens_wolfs при обработке файла: I\O error 103 ?
|
24.02.2018, 22:11 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Закрытие не открытого файла. Смотри как открываются и как закрываются))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.02.2018, 22:28 | #8 |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
А вот оно что. Благодарен Вам за подсказку. Сделал так, вроде бы работает:
Код:
|
24.02.2018, 23:20 | #9 | |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Цитата:
Можно оставить ваш вариант. А можно проверку сделать так. Код:
Последний раз редактировалось Aliens_wolfs; 24.02.2018 в 23:51. |
|
25.02.2018, 02:57 | #10 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,872
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi XE4 и формы | Александр_Фролово | Общие вопросы Delphi | 21 | 02.08.2014 09:32 |
Delphi XE4 TXMLNodeList | BidiBom | Компоненты Delphi | 2 | 14.04.2014 10:26 |
Delphi XE4. Formatter | Larboss | Общие вопросы Delphi | 8 | 26.11.2013 10:17 |
Delphi XE4 | Simon1712 | Общие вопросы Delphi | 2 | 14.09.2013 04:40 |
Открытие *.exe файла в Delphi, C++ Builder или RAD Studio XE4...!? | TeleSky | Помощь студентам | 10 | 28.06.2013 12:49 |