![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Интерактивный генератор текстов [D7, 95/98, XP]
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]алгоритм здесь не при чем.
тебе же сказали, что тормоза не в формировании строки.
тормоза в отрисовке мемо