Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TRichEdit - Раскраска при загрузке из файла ? / 4 сообщений из 4, страница 1 из 1
31.01.2003, 16:34
    #32099761
kad
kad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRichEdit - Раскраска при загрузке из файла ?
При загрузке из файла в TRichEdit необходимо, чтобы в зависимости от содержимого,
строки были раскрашены в соответствующие цвета.
Для этого накалякал процедуру загрузки из файла идентичую TStrings.LoadFromFile,
которая осуществляет следующую последовательность вызовов
TStrings.LoadFromFile -> TStrings.LoadFromStream -> TStrings.SetTextStr
В TStrings.SetTextStr осуществляется добавление строк в Lines.
В ней по содержимому строки устанавливется ее цвет.
Процедура TStrings.SetTextStr работает быстро,
а моя процедура - медленно. При чем ее замедляет не анализ строки и установка цвета,
а добавление строки.
Почему так происходит? И как ускорить?

Код моей процедуры:

procedure TfmMain.SetTextStr(const Value: string{содержимое файла представленное ввиде строки});
var
P, Start, P1: PChar;
S: string;
begin
RichEdit.Enabled := False;
RichEdit.Lines.BeginUpdate;
try
with RichEdit do
begin
Lines.Clear;
P := Pointer(Value);
if P <> nil then
while (P^ <> #0) do
begin
Start := P; // сохраняем указатель на начало строки
while not (P^ in [#0, #10, #13]) do // находим конец строки
begin
Inc(P);
end;
SetString(S, Start, P - Start); // получаем строку для добавления
//----------------------- этот кусок не замедляет, если его выкинуть работает всеравно медленно
SelStart; //
SelAttributes.Color := GetColor(s); // устанавливаем необходимый цвет строки
//-----------------------
Lines.Add(S); // добавляем строку !!!!! Вот это крепко замедляет
if P^ = #13 then Inc(P);
if P^ = #10 then Inc(P);
end;
end;
finally
red.Lines.EndUpdate;
red.Enabled := True;
end;
end;
...
Рейтинг: 0 / 0
31.01.2003, 18:30
    #32099853
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRichEdit - Раскраска при загрузке из файла ?
можно было перед Lines.Add(S)
добавить rt.SelAttributes:= clRed
без селстартов и ендов
...
Рейтинг: 0 / 0
03.02.2003, 03:57
    #32100133
ScableR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRichEdit - Раскраска при загрузке из файла ?
А собственно, дополнительные компоненты для раскраски чем тебя не устраивают? Иногда ими выгоднее пользоваться вместо написания собственных процедур.
...
Рейтинг: 0 / 0
03.02.2003, 04:04
    #32100134
ScableR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TRichEdit - Раскраска при загрузке из файла ?
Вот, можешь закачать такой компонент (может там есть то, что тебе надо):
SynEdit
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TRichEdit - Раскраска при загрузке из файла ? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]