Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #12  
Старый 07.03.2017, 20:45
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
- в цикле ДЛЯ файлы вызываются по имени и анализируются по указанным параметрам (размер файла, тип файла, ширина-высота файла) и ИМЕНА файлов сортируются в списке по правилам
- файл с первым именем в списке(с самым большим индексом) вызывается, обрабатывается и сохраняется в другом каталоге с другим именем
Следовательно, все файлы тебе не нужны, нужен только один по совокупности признаков. Признаками не является весь файл.
Сортировка всегда основывается на сравнении двух элементов по набору признаков, значит эта функция сравнения у тебя есть. Назовем её "условием F".
Поэтому:
0) Делаешь переменную с одной (первой попавшейся) картинкой в памяти. Называем её "текущей". Сохраняешь в переменных её параметры.
1) Скачиваешь очередную картинку.
2) Вытаскиваешь нужные тебе признаки.
3) Проверяешь условие F для скачанной картинки и для текущей. Если по этим признакам скачанная картинка должна оказаться при сортировке до текущей - в переменную текущей картинки сохраняешь скачанную и меняешь переменные с параметрами.
В противном случае выбрасываешь скачанную, т.к. она в любом случае не окажется первой при сортировке (ведь текущая до неё).
4) Если есть что еще качать - вернуться к п.1.

Стандартная задача поиска минимума.
Плюс, если подумать, параметр "размер" можно получить, не скачивая картинку вообще, параметр "тип" - скачав первые 4 байта, а параметры ширины и высоты в большинстве случаев - скачав заголовок картинки соответствующего типа. Поэтому если нужно, то при "анализе" можно выбирать нужную картинку, не скачивая ничего целиком, и уже после скачать полностью только ту, которая найдется этим импровизированным поиском минимума.

При этом понятно, что скачивание занимает значительно больше времени, чем "анализ" ширины и высоты с размером. Поэтому скачивать можно в потоках, а "анализ" с перезаписыванием "текущей" синхронизировать через стандартные механизмы синхронизации потоков.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 07.03.2017 в 20:56.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:25.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025