Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Memo для очень больших файлов, У кого-нибудь есть наработки? 
:(
    Опции темы
Vit
Дата 29.7.2002, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Есть необходимость создания проги для редактирования очень больших текстовых файлов (имеются ввиду Log файлы от разных, применяемых у меня програм). Размеры файлов составляют от сотен мегабайт до нескольких гигабайт. Естественно, что ни о какой загрузке такого файла целиком не идёт речь - это завесит любую машину, и тормознёт любой сервер. Естественное решение - это организация загрузки файла по мере необходимости - кусками, более или менее удобоваримых размеров. Однако реализация такой штуки по мере осмысления представляется мне не столь простой как на первый взгляд. Например, я подгружаю куски по 64Kb, как мне выделить кусок текста и скопировать в буфер большего размера?

Господа, кто-нибудь делал что-либо подобное? Поделитесь опытом? Может у кого есть какой-нибудь компонент или класс для работы с такими файлами?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Song
Дата 30.7.2002, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Ничего создавать не надо. Всё уже сделали за нас: CreateFileMapping()


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Vit
Дата 30.7.2002, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



А можно пример какой-никакой?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Song
Дата 30.7.2002, 17:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Можно, завтра.
  Вверх
Song
Дата 31.7.2002, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Vit, тут я посмотрел, готового у меня нет отрывка :(
Давай сделаем творческий проект, если тебя это конечно реально интересует.
Что пока надо:
1. Наследник от TMemo
2. Перехват движения по мемо. Идея такая: нужно отследить тот момент когда нужно подгрузить в мемо очередной кусочек текста, т.к. в единый момент времени мы будем отображать в мемо только столько текста сколько убирается в его клиентскую область. Когда произойдёт движение вниз или вверх мы подгружаем очередной кадр с соответственным сдвигом.

Вообщем пока так. А я соображу с проецированным файлом.
Кстати нам нужно использовать CreateFileMapping()+MapViewOfFile()


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Vit
Дата 31.7.2002, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Ты знаешь, наверное в этом проекте  сложна не столько реализация, сколько надо понять как оно будет работать. Подгрузить следующий кусок не проблема, проблема работы на стыках кусков - например выделение текста для копирования , если выделение находится на стыке кусков или, что ещё хуже, выделение больше одного куска... А также алгоритм вставки текста - если напрямую решать, то после каждой вставленной буквы надо перезаписывать огромный файл, значит надо где-то буфферизировать данные, а затем делать сохранение одним махом, причём опять-таки буфферизированные данные могут выскочить за предел текущего блока, затем при чтении изменённого блока вновь, он должен читаться с учётом изменений. В общем работка ещё та!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
neutrino
Дата 31.7.2002, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата

...проблема работы на стыках кусков - например выделение текста для копирования , если выделение находится на стыке кусков...

Надо сделать так, чтобы куски "пересекались". Какие-нибудь 3Кб чтобы были обшие у каждои' пары кусков.
Цитата

А также алгоритм вставки текста - если напрямую решать, то после каждой вставленной буквы надо перезаписывать огромный файл, значит надо где-то буфферизировать данные, а затем делать сохранение одним махом, причём опять-таки буфферизированные данные могут выскочить за предел текущего блока...

Можно запомнить границы загруженного в память куска, и записать поверх него, при этом немного фрагментирoвать файл в физическом смысле.




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.