Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Oптимизировать загр. txt-файла в StringList и дальше в RichEdit


Страницы:   1 2

wah ©   (2009-09-08 21:10:00) 

При открытии файла мне нужно его обработать, потом положить в RichEdit. Я сначала гружу в StringList, потом построчно обрабатываю и кладу в RichEdit. Получается тормозно. RichEdit ждет пока все загрузится.
Посоветуйте, плз, как сделать. Хотя бы направление - через OnIdle, потоки, API  или еще как-нибудь.
С ув.


Германн   (2009-09-09 02:57:00) [21]


> wah ©   (09.09.09 02:49) [13]
>
> > [12] Германн ©   (09.09.09 02:34)
> > Оказывается она существует реально!
>
> Кто?
> Я понимаю, что мои высказывания могут выглядеть довольно
> глупо. Но, имхо, чайникам это позволено.
> Попытаюсь описать свою цель, может я с самого начала не
> туда зарулил.
> Мне нужно отобразить плайн-текст с некоторым форматированием.
>  Для этого я решил использовать формат xml. Хотя можно использовать
> и другой формат, просто нужно обозначить абзацы, которые
> должны выглядеть в RichEdit'e по разному. Я открываю файл,
>  записываю формат каждой строки в StringList, потом убираю
> теги и записываю строки в RichEdit в нужном формате.
> Вот примерно как-то так. Вероятно можно решить эту задачу
> проще и оптимальней. В связи с чем и прошу совета.
>

Чайникам дозволено почти всё. (Не дозволено только то, что запрещено правилами.)
Я и сам "чайник"!
Я только много чего не могу понять в сём сабже. Ну например "плайн-текст с некоторым форматированием".


wah   (2009-09-09 02:49:00) [22]

> [12] Германн ©   (09.09.09 02:34)
> Оказывается она существует реально!

Кто?
Я понимаю, что мои высказывания могут выглядеть довольно глупо. Но, имхо, чайникам это позволено.
Попытаюсь описать свою цель, может я с самого начала не туда зарулил.
Мне нужно отобразить плайн-текст с некоторым форматированием. Для этого я решил использовать формат xml. Хотя можно использовать и другой формат, просто нужно обозначить абзацы, которые должны выглядеть в RichEdit'e по разному. Я открываю файл, записываю формат каждой строки в StringList, потом убираю теги и записываю строки в RichEdit в нужном формате.
Вот примерно как-то так. Вероятно можно решить эту задачу проще и оптимальней. В связи с чем и прошу совета.


Германн   (2009-09-09 02:34:00) [23]


> Пока нет обработки строк. Тормозит REdit.Lines := FullText;
>
> Может потому что переписывает данные.

Фантастика!
Оказывается она существует реально!
:)


wah   (2009-09-09 02:22:00) [24]

> [10] Германн ©   (09.09.09 01:23)
> > и оптимизировать надо обработку строк

Пока нет обработки строк. Тормозит REdit.Lines := FullText;
Может потому что переписывает данные. Если бы можно было дать RichEdit'y указатель, но TStringList это же не данные. Или можно это как-то сделать?


Германн   (2009-09-09 01:23:00) [25]


> wah ©   (09.09.09 01:16) [9]
>
> [7] Германн ©   (09.09.09 00:54)
> > не столько против "медленности"
>
> Нет, конечно мне и тормоза не нравятся.

Значит
> и оптимизировать надо обработку строк. Но не видя ее кода,
>  посоветовать ничего нельзя.


wah   (2009-09-09 01:16:00) [26]

[7] Германн ©   (09.09.09 00:54)
> не столько против "медленности"

Нет, конечно мне и тормоза не нравятся.

> Можно в цикл включить "выборку сообщений":

Так лучше, спасибо. Почти все нормально. Только при щелчке в окне РичЭдита до окончания загрузки, он начинает в цикле прокручивать текст.


wah   (2009-09-09 01:03:00) [27]

> [6] Юрий Зотов ©   (09.09.09 00:22)
> Если форма не будет перерисовываться, то так оно и есть.

Вы правы, форма мажется. Но дело в том, что это происходит даже без всякой обработки строк:
FullText := TStringList.Create;
FullText.LoadFromFile(FileName);
REdit.Lines := FullText;

Я даже попробовал записать из TStringList'а во временный файл а потом загрузить в RichEdit - получилось нормально, быстро. Почему же из TStringList'а в RichEdit тормозит?


Германн   (2009-09-09 00:54:00) [28]


> Но не видя ее кода, посоветовать ничего нельзя.

Ну кое-что можно посоветовать, ибо автор возражает не столько против "медленности",  сколько против
> Пока все не загрузится, он не отвечает
.

Можно в цикл включить "выборку сообщений":

for i := 0 to FullText.Count - 1 do
begin
// обработка
REdit.Lines.Add(FullText.Strings[i]);
Application.ProcessMessages;
end;


Юрий Зотов   (2009-09-09 00:22:00) [29]

> wah ©   (08.09.09 21:50) [4]

> Тормозит как раз RichEdit - Пока все не загрузится, он не отвечает.
> Это секунд 8. Файл 150 кб.

150 К - это не большой файл. Если он грузится аж целых 8 секунд, то тормозит не RichEdit, а построчная обработка (та, что в цикле). А RichEdit (да и вся программа) не отвечает потому, что все эти 8 секунд поток занят и не выбирает сообщения из очереди. Попробуйте, например, в течение этих 8 секунд "повозить" по форме окном любой другой программы. Если форма не будет перерисовываться, то так оно и есть.

Значит, и оптимизировать надо обработку строк. Но не видя ее кода, посоветовать ничего нельзя.


wah   (2009-09-08 22:10:00) [30]

Наверно нужно два потока, в первом показать в RichEdit'e часть текста, а во втором (с меньшим приоритетом) подгружать остальные строки.


wah   (2009-09-08 21:50:00) [31]

Тормозит как раз RichEdit - Пока все не загрузится, он не отвечает. Это секунд 8. Файл 150 кб.


СовестьДМ   (2009-09-08 21:28:00) [32]

FullText := TStringList.Create;
FullText.LoadFromFile(FileName);
for i := 0 to FullText.Count - 1 do
begin
// обработка
end;
REdit.Lines:=FullText;


wah   (2009-09-08 21:20:00) [33]

FullText := TStringList.Create;
REdit.Lines.LoadFromFile(FileName);
for i := 0 to FullText.Count - 1 do
begin
 // обработка
 REdit.Lines.Add(FullText.Strings[i]);
end;


СовестьДМ   (2009-09-08 21:12:00) [34]


> и кладу в RichEdit

каким образом?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо