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

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

Интерактивный генератор текстов [D7, 95/98, XP]


Страницы:   1 2

timekiller ©   (2010-03-12 15:36:00) 

Сутки добрые, Уважаемые знатоки!
Помогите разобраться со следующим:

Есть некий алгоритм генерации текста в поле Memo из множества других полей TEdit по определенному шаблону, тоесть обскакиваем каждый TEdit, ищем его тег в шаблоне (на мотив phpBB [::тег::] и заменяем его на текст из TEdit, таким образом конструируется текст в TMEmo...
Генератор стоит на таймере, который сбивается поновой на OnChange каждого TEdit, таким образом генерация происходит по нажатию последнего символа и ожиданием в секунду.
Текст мерцает при изменении одного из TEdit, тоесть реконструируется в TMemo каждый раз по новой, начиная с загрузки шаблона для текста и тд...

Проблема нагрянула такая: С развитием прог продукта, образовалось, допустим, уже тысяча компонентов Tedit, при которых текст теперь генерируется слишком долго, невыносимо долго...

Подскажите подход к данной проблеме, возможно кто-то сталкивался с подобным?
Каким образом можно организовать процесс одновременного изменения текста в TEdit и на его потенциально заменяемом месте в TMemo?


timekiller   (2010-03-15 10:16:00) [1]

Огромное спасибо за рассуждения и наводки!
За выходные я выдумал некий массив координат текстов из TEdit с погрешностью смещения, каждый для определенного генерируемого TMemo :)
Эффект "отзеркаливания" текста получился


Anatoly Podgoretsky   (2010-03-14 12:11:00) [2]

> Ega23  (14.03.2010 10:33:30)  [30]

Правильно оно называется спаммер, без всяких SEO


Ega23   (2010-03-14 10:33:00) [3]

СЕО-оптимизатор. Или как оно там правильно называется? Вобщем, генерация бредо-текста для поднятия в топах поисковиков.


Не занят   (2010-03-14 07:32:00) [4]


> ps зачем здесь мемо (который заточен на ручной ввод)?


Для каких случаев, по твоему, у Мемо сделали свойство ReadOnly?


Не занят   (2010-03-14 07:27:00) [5]


> Медвежонок Пятачок ©   (12.03.10 21:49) [22]
> Неудобно для пользователся - нельзя выделить и скопировать.
>
>
> <Цитата>
>
> скопировать так же легко как и в случае с мемо.
> и даже выделять ничего не надо.
>
>


А я хочу одно предложение выделить.


Не занят   (2010-03-14 07:27:00) [6]


> Проблема нагрянула такая: С развитием прог продукта, образовалось,
>  допустим, уже тысяча компонентов Tedit, при которых текст
> теперь генерируется слишком долго, невыносимо долго...


Не верю. Даже если нужно сделать тысячу подстановок в большой строке (в сотни мегабайт) - это можно уместить в десятки милисекунд. Оптимизируй свою генерацию.

1. Для начала (если вдруг там ты дергаешь Memo.Text все время) всю генерацию текста делай в отдельную строковую переменную, и только потом загоняй результат в мемо.

2. Если все равно медленно, то основное время, скорее всего уходит на множественные перевыделения памяти для вновь формируемой строки. Это можно победить с помощью предварительного выделения памяти под результирующую строку с запасом.


lady   (2010-03-14 06:06:00) [7]

скрывай форму по началу и показывай по окончанию.!


KSergey   (2010-03-13 13:58:00) [8]

> timekiller ©   (12.03.10 18:09) [16]
> Бегинапдейт - откладывает необходимость перерисовки, это
> плюс, иллюзия для пользователя в том что программа подвисла и думает

Вы значение слова "иллюзия" вообще знаете? Почитайте в словаре.
Программа на самом деле зависла и на самом деле думает, и никакой иллюзии тут нет.
Если она думает 2 часа и вас это не устраивает - меняйте алгоритм в корне. Выше уже говорилось про отдельную string-переменную, наверняка это будет быстрее.


KSergey   (2010-03-13 13:55:00) [9]

> Медвежонок Пятачок ©   (12.03.10 18:28) [18]
> чем канвас.текстаут хуже мемо.лайнс?

Тем, что TLabel - тупо удобнее. Хотя и делает ровно тот же канвас.текстаут
Ну я к тому, что кроме варианта мемо и ручками - есть другие, готовые.


Германн   (2010-03-13 01:53:00) [10]


> Интерактивный генератор текстов [D7, 95/98, XP]
>
> timekiller ©   (12.03.10 15:36)  

Плюнуть. И начать новый проект заново.
Желательно составить новое ТЗ.


Медвежонок Пятачок   (2010-03-12 21:49:00) [11]

Неудобно для пользователся - нельзя выделить и скопировать.

<Цитата>

скопировать так же легко как и в случае с мемо.
и даже выделять ничего не надо.


Leonid Troyanovsky   (2010-03-12 21:12:00) [12]


> Fenik ©   (12.03.10 20:59) [19]
> > чем канвас.текстаут хуже мемо.лайнс?

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

Отмазка, IMHO.

> Fenik ©   (12.03.10 21:01) [20]

> Убить такую программу.

программиста.

--
Regards, LVT.


Fenik   (2010-03-12 21:01:00) [13]

> уже тысяча компонентов Tedit

Убить такую программу.


Fenik   (2010-03-12 20:59:00) [14]

> чем канвас.текстаут хуже мемо.лайнс?

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


Медвежонок Пятачок   (2010-03-12 18:28:00) [15]

Приколист? Типа все сделаем ручками? Зачем??

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

чем канвас.текстаут хуже мемо.лайнс?


Медвежонок Пятачок   (2010-03-12 18:25:00) [16]

идет такая, что надо отрисовывать пиксел за пикселом

а мемо отрисовывает текст не пиксел за пикселом?
:)


timekiller   (2010-03-12 18:09:00) [17]

хым =) Ценю я ваш сарказм, повеселило, но не суть

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

Бегинапдейт - откладывает необходимость перерисовки, это плюс, иллюзия для пользователя в том что программа подвисла и думает


KSergey   (2010-03-12 17:47:00) [18]

> Медвежонок Пятачок ©   (12.03.10 16:55) [9]
> рисуй текст на канве.

Приколист? Типа все сделаем ручками? Зачем??

> timekiller ©   (12.03.10 16:47) [7]
> BeginUpdate только создает иллюзию и вводит в панику юзверя

Чего??! какую иллюзию?? Чего этот метод делает - знаем?


timekiller   (2010-03-12 17:30:00) [19]

Ок, Медвежонок
Всем огромное спасибо ;)


Медвежонок Пятачок   (2010-03-12 17:23:00) [20]

алгоритм здесь не при чем.
тебе же сказали, что тормоза не в формировании строки.
тормоза в отрисовке мемо


Страницы:   1 2

Наверх

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