![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oптимизировать загр. txt-файла в StringList и дальше в RichEdit
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
каким образом?