Блокнот Графомана

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Блокнот Графомана

Сообщение azsx » 10.08.2016 02:37:17

заработал
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Блокнот Графомана

Сообщение Лекс Айрин » 10.08.2016 10:39:24

zub писал(а):и подобной риторики


Это не риторика. Это практика программирования. Не стоит оптимизировать то, что не требует оптимизации. Так как оптимизация требует много усилий, которые можно потратить на что-то другое... например, оптимизацию реально тормозного кода. И потом, использование трюков может привести к поломке кода.

Понятное дело, что потом придется все переделать. Но переписывание кода будет производиться поэтапно и, по возможности, уходом на более низкие уровни. Вот только не потребует ли это написания двух разных версий программы? (под линукс и под винду).

zub писал(а):А что в этом такого? Заметь, я даже не вставил это хозяйство в твою программу, она запущена в фоне и виснет когда я работаю в кате. Больше ничто не висит и не крашится - всё штатно


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

zub писал(а):Если бы работа с огромными текстами нужна была бы постоянно - предложил бы.


Так вот, для меня нормально редактировать тексты по сотню и более страниц А4. Это конечно, не "Война и Мир", но тоже немало. На определенном этапе идет сборка текста из кусков. И отображая текст на канвасе я повторю ВЕСЬ функционал Мемо... и не уверен, что получившийся недокомпонент будет более быстр.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Блокнот Графомана

Сообщение zub » 10.08.2016 11:49:15

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

>>Не имеет смысла отображать в просмотре буфера слишком большой текст, так что имеет смысл ограничить просмотр небольшим фрагментом. Именно из-за этого, кстати, и возникают тормоза в таймере.
Ты читаешь что я тебе пишу? сразу предлагал уйти от тупой вставки - получить текст и поступить с ним по ситуации

>>Вообще, тут ошибка в другом, но в битве за "чистый код" ты не обнаружил ее
Уж незнаю чистый там код или нечистый - имхо он абсолютно непригодный. Даже при желании взять из него ниче не получится, только если копипастить - всё сплошным монолитноформошлепаным куском.
И даже формошлепство какоето странное - вместо тулбара с кнопками картинки.

>>И отображая текст на канвасе я повторю ВЕСЬ функционал Мемо... и не уверен, что получившийся недокомпонент будет более быстр.
Если сразу задаться скоростью компонента, а не "чистым" кодом то вполне.Я бы попытался както так: пусть там хоть 10 толстых вставлено - на экране видно маленькую часть текста - ее и обрабатываем, осталькое потом - размазываем тормоза и делаем их незаметными. Проверь компонент скалогрыза может у него уже всё реализовано?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 10.08.2016 19:13:52

zub писал(а): уйти от тупой вставки - получить текст и поступить с ним по ситуации


угу... получить большой кусок текста, скопировать его, а потом скопировать еще раз от него кусочек? Это ли не говнокод?

zub писал(а): вместо тулбара с кнопками картинки.

Это лишь проба... да и не везде нужны тулбары.

zub писал(а):Если сразу задаться скоростью компонента, а не "чистым" кодом то вполне.

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

zub писал(а):Проверь компонент скалогрыза может у него уже всё реализовано?


это RichEdit что ли? Вообще-то он немного для другого...

zub писал(а):Я бы попытался както так: пусть там хоть 10 толстых вставлено - на экране видно маленькую часть текста - ее и обрабатываем, осталькое потом - размазываем тормоза и делаем их незаметными.


за такой код по голове никого не погладят -- то, что не отображается придется вечно с жесткого диска тянуть... при том, что при глобальной правке текста скачки туда-сюда в пределах, как минимум, десяти страниц скорее норма, чем исключение. Тут свопинг моментом вылезает. А ведь были скачки и по 50 страниц. По крайней мере ворд подвешивать удавалось легко и непринужденно, если комп слабоват.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Блокнот Графомана

Сообщение zub » 10.08.2016 19:50:09

>>угу... получить большой кусок текста, скопировать его, а потом скопировать еще раз от него кусочек? Это ли не говнокод?
Хорэ рассуждать, делай уже чтонить с этим.

>>это RichEdit что ли? Вообще-то он немного для другого...
Шурупы крутим микроскопами... а тут "Или мы слишком гордые чтобы пользоваться©" проверить?))

>>за такой код по голове никого не погладят -- то, что не отображается придется вечно с жесткого диска тянуть...
Какой диск? ты про че? скоро в утюгах гигабайты памяти будут. а тут какойто Толстой всеголишь.
Железное правило - обрабатывай только то что нужно никто не отменял. Чтоб отрисовать пару абзацев - несколько тысяч букв ненадо разбивать весь текст на слова\строки\абзацы - прыжки тут абсолютно не проблема.
Полная разбивка нужна только для отображения скролбаров
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 10.08.2016 20:08:59

zub Я УЖЕ сделал. Пока я ограничил области просмотра достаточно небольшими фрагментами.
zub писал(а):Шурупы крутим микроскопами... а тут "Или мы слишком гордые чтобы пользоваться©" проверить?))

так мне же нужен неформатированный текст. По крайней мере пока.

zub писал(а):Чтоб отрисовать пару абзацев - несколько тысяч букв ненадо разбивать весь текст на словастрокиабзацы - прыжки тут абсолютно не проблема.
Полная разбивка нужна только для отображения скролбаров


Не потяну я компонент с программным буфером и собственной реализацией скролбара. При том, что нельзя пользоваться TStringList (судя по некоторым экспериментам, именно он тормозит в TMemo, а точнее, механизм переноса строк).
И, кстати, ты не прав. Абзацы наше все.

Добавлено спустя 20 часов 22 минуты 12 секунд:
Разобрался я как работать с текстом с мягкими разрывами строк, так что этот момент тоже отпал. осталось убрать лишние TStringList -- толку от них мало((

Добавлено спустя 18 часов 30 минут 56 секунд:
После замены TStringList на String преобразование идет без проблем и неприятных побочных эффектов.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Блокнот Графомана

Сообщение Лекс Айрин » 26.08.2016 10:27:28

все же, zub оказался прав... убрал лишнюю работу с буфером обмена... она явно притормаживает прогу((( оставил часы и календарем, но, чувствую, проще совсем убрать таймер.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Блокнот Графомана

Сообщение zub » 26.08.2016 12:38:26

Я еще дровишек принес.
Лекс Айрин писал(а):но, чувствую, проще совсем убрать таймер.

Убирать ненадо, не надо ничего сложного делать в нем - крутить внутренние часики программы + возможно ченибудь.invalidate когда ченибудь надо перерисовать. Долгую тормозную работу ИМХО лучше делать в onIdle, причем при необходимости разбив на порции, а не за раз - чтоб тормоза не ощущались

Также рекомендую уйти от монолитной программы к плагинной организации. Т.е. в базе у тебя будет приложение+плагин редактора=чтото наподобии viewtopic.php?f=10&t=11265
Для начала можно запилить разные плагины редакторов на базе мемо, сюнедита, ричедита, куды - а академических целях
Потом плагины своих окошек - "менеджер" клипборда, теги, что там у тебя еще есть

Пока фпц не позволяет плагины в чистом виде - официально нет пакетов, реализовать их можно только костылями. Поэтому делать надо не "рантайм" плагины в длл, а "компилетайм" плагины - в дальнейшем можно будет легко перейти на длл плагины
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 26.08.2016 15:28:21

zub, вообще, я подумываю часики тоже остановить... А дату/время вставлять только из меню. Хотя на данном этапе остановка таймера не дает ускорения.

модульную прогу я пока не потяну, да и, если честно, делать разные типы редакторов плагинов не вижу смысла... Это прога для набора художественного текста, а не текста программ/сайтов. В ней мельтешение стилей(расцветок) будет сильно мешать.

Добавлено спустя 2 минуты 30 секунд:
Ах да.. зависимость тормознутости текста от размера осталась, но немного ослабла.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Блокнот Графомана

Сообщение zub » 26.08.2016 15:39:38

Возможность "разнородных" редакторов это я конечно загнул)) но вынести свои художественные нужды в отдельные модули и убрать зависимости от них в "ядре" программы крайне желательно
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 26.08.2016 15:46:46

zub, вопрос как? Фреймами?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Блокнот Графомана

Сообщение zub » 26.08.2016 21:28:50

Что как?
с фреймами незнаком.
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 27.08.2016 09:40:01

как реализовать описанное тобой.

На самом деле, почти все "нужды" это миниформочка и минимум кода. Чаще всего, одна строчка.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Блокнот Графомана

Сообщение zub » 28.08.2016 14:16:27

Для начала вынеси всё в отдельные юниты, убери все ссылки из юнитов "ядра" на юниты "плагинов". Т.е. чтоб ядро ниче не знало о плагинах, но предостовляло наружу какойто общий интерфейс достаточный для функционирования плагинов
Склеить всё окошки в одно или тупо лепля форму на форму или поумней-нопокосячней анхордокингом
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Блокнот Графомана

Сообщение Лекс Айрин » 29.08.2016 10:16:27

То есть, в главной форме оставить только меню (ну и, возможно, окно редактора) ... попробуем.

Кстати, совсем не обязательно лепить форму на форму... есть одна задумка... можно ведь перемещать и все формы разом. Благо, почти все для этого я сделал.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 19

Рейтинг@Mail.ru