Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.01.2003, 16:34
|
|||
|---|---|---|---|
|
|||
TRichEdit - Раскраска при загрузке из файла ? |
|||
|
#18+
При загрузке из файла в 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2003, 18:30
|
|||
|---|---|---|---|
TRichEdit - Раскраска при загрузке из файла ? |
|||
|
#18+
можно было перед Lines.Add(S) добавить rt.SelAttributes:= clRed без селстартов и ендов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.02.2003, 03:57
|
|||
|---|---|---|---|
TRichEdit - Раскраска при загрузке из файла ? |
|||
|
#18+
А собственно, дополнительные компоненты для раскраски чем тебя не устраивают? Иногда ими выгоднее пользоваться вместо написания собственных процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.02.2003, 04:04
|
|||
|---|---|---|---|
TRichEdit - Раскраска при загрузке из файла ? |
|||
|
#18+
Вот, можешь закачать такой компонент (может там есть то, что тебе надо): SynEdit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&tablet=1&tid=2119206]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
130ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 415ms |

| 0 / 0 |
