![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день. Есть следующая ситуация:
- загрузчик страниц(на базе TidHTTP и TThread) получает список УРЛ и начинает параллельную закачку страниц - число закачек ограничено 10 (пока) - закачка страниц происходит асинхронно, каждая в своем потоке, результат закачки переносится в поле типа property Html: string read FHtml write FHtml; Код:
type TLoader = class(TThread) private FUrl:string; FHtml:string; { Private declarations } protected procedure Execute; override; function LoadHtmlPage(const Url:string):string; public property Url: string read FUrl write FUrl; property Html: string read FHtml write FHtml; end; - методом CS, на текущий момент, данные передаются в МЕМО, просто для наглядности. и там накапливаются -------------------------- Необходим накопитель со следующими параметрами: - доступность из всех процедур. типа глобальная переменная - два поля: одно для УРЛ, второе для кода HTML-страницы. может и три, третье - для хранения идентификатора, чтоб не было коллизий - работающее по принципу стека(тогда третье поле не нужно) - без использования записи на ЖД в файл. все должно хранится в ОЗУ ++++++++++++++++++++++++++++ Внимание! Вопрос: на основе чего можно сделать такой накопитель: - что то слепить из операторов и типов(Списки, строки и все такое). никто не знает ссылок на что то похожее? - использовать компоненты из палитры, там много чего с DB в названии, но с этими компонентами не знаком совершенно, может кто подскажет, какой компонент подойдет для накопителя? - использовать ИнтерБейс, или еще какую внешнюю БД. что крайне нежелательно, во всяком случае на текущем этапе. |
#2
|
|||
|
|||
![]() Создать свой класс и хранить их в TObjectList.
Только помни, что памяти у тебя всего 2ГБ на весь процесс (если 32 бит). Реально, я бы больше 0.5ГБ не рассчитывал. Если все твои страницы уложаться туда - хорошо. |
#3
|
|||
|
|||
![]() Цитата:
|
#4
|
|||
|
|||
![]() Ну, насчет несоизмеримо, сомневаюсь. Но то, что тебе скорее всего придется хранить в ОЗУ чуть больше, это точно. Если у тебя 10 страниц, даже пусть по 1 МБ, то пофиг, решение вполне годится. Напрягаться надо будет, если общий объем загружаемых данных будет больше 0.5 ГБ (зависит от версии Delphi и от того, как ты будешь хранить это все - строкой или просто бинарными данными).
|