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

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

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

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

Сообщение zub » 08.08.2016 11:45:02

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

Это видимо из той же области что и полная форма if-then. Отладчик работает.

работает... и пока не возникало проблем.

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

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

Появляется модальное окно о загрузке дерева заметок, программа соответственно останавливается, а таймер продолжает шпарить.
Вылетает тут
Код: Выделить всё
function DataCompile: String;
....
If Tune.FormTune.CheckBox3.Checked = true then//<---------------------------------------
   Begin
   Result := Result + StringWeek;//StringWeek будет определена позже
   End else begin end;
end;

тут тоже кстати по рукам надо))
zub
долгожитель
 
Сообщения: 2261
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение Лекс Айрин » 08.08.2016 14:32:25

zub писал(а):Сплошные проблемы начинаются стоит в в буфере появиться большому фрагменту текста.


это, к сожалению, обойти трудно.

zub писал(а):Нужно наверно сначала проанализировать что там в клипборде, а не тупо сразу вставлять.


вообще-то, нет смысла повторять работу уже произведенную. А вставка громадных объемов текстовой инфы это нормальная ситуация среди графоманов.

zub писал(а):Появляется модальное окно о загрузке дерева заметок, программа соответственно останавливается,

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

Причем, у меня оно появлялось при двойном клике на текстовом файле, но не появлялось при кидании этого же файла на иконку.

Я обновлю версию.

zub писал(а):тут тоже кстати по рукам надо))


помнишь анекдот про папу-программиста, сына и солнце?

"только ничего не трогай!".
Работоспособность данного фрагмента меня устраивает, так что нет смысла оптимизировать. Хотя если подскажешь как правильнее, то поправлю.

Добавлено спустя 33 минуты 23 секунды:
крайняя версия обновлена.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4097
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение zub » 08.08.2016 16:21:05

это, к сожалению, обойти трудно.

Получить текст из буфера обмена трудно? Тут тоже по какимто суперобоснованым причинам нельзя избавиться от мемо?

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

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

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

Сообщение Лекс Айрин » 08.08.2016 17:37:02

zub, вообще-то, зачем тогда нужен редактор, если он не вставляет текст? Да и единичная вставка даже большого текста не великая проблема. Проблема в том, что перебор большого текста тормозит. И если в удалении тегов теперь чуть проще, то при вставке уже не обойдется фокусом -- проблема в поиске конца строк. Буду разбираться

zub писал(а):Тут тоже по какимто суперобоснованым причинам нельзя избавиться от мемо?


Как бы другого компонента отображающего обычный (не форматированный) текст нет.

zub писал(а):Почитать как в лазаре можно работать с буфером обмена и получить текст без мемо.


это как раз все знают, даже я...
Код: Выделить всё
var
Str:String:
Begin
...
Str:= Clipboard.AsText;
...
End;



zub писал(а):Почему ты называешь место с гарантированым висом работоспособным?


Я начинаю думать, что у тебя комп еще хуже моего. Ибо у МЕНЯ именно здесь не виснет.
А где виснет, там реально ничего больше сделанного я не могу сделать. Но это не говорит о том, что не буду пытаться. Но без фанатизьму.

Добавлено спустя 2 минуты 56 секунд:
Ах да... единственное, что мне кажется стоит добавить, это очистку буфера обмена от крупного текста. Ибо реально достает его оттуда выбивать.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4097
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение zub » 08.08.2016 18:05:37

Как бы другого компонента отображающего обычный (не форматированный) текст нет.

что ты тут отображаешь?
Код: Выделить всё
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
...
     MainForm.MemoBuff.PasteFromClipboard;
...
     FormExtBuff.Memo1.PasteFromClipboard;//синхронизация с буфером обмена.
...
end;
zub
долгожитель
 
Сообщения: 2261
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение Лекс Айрин » 08.08.2016 18:21:01

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

Добавлено спустя 41 минуту 11 секунд:
интересно, что такое принципиально плохое (тормозное) в тексте процедуры PasteFromClipboard?

Код: Выделить всё
procedure TCustomEdit.PasteFromClipboard;
begin
  if HandleAllocated then
    TWSCustomEditClass(WidgetSetClass).Paste(Self);
end;

class procedure TWSCustomEdit.Paste(const ACustomEdit: TCustomEdit);
begin
  if Clipboard.HasFormat(CF_TEXT) then
    ACustomEdit.SelText := Clipboard.AsText;
end;

и чем таким серьезным, кроме проверки, что в буфере действительно текст, она отличается от кода
Код: Выделить всё

var
Str:String:
Begin
...
Str:= Clipboard.AsText;
...
End;
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4097
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение zub » 09.08.2016 11:07:55

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

Одолжил)) Потому что так как сейчас это говнокод

интересно, что такое принципиально плохое (тормозное) в тексте процедуры PasteFromClipboard?

Ну прикинь сколько всего нужно сделать чтобы отобразить текст. оно тебе нужно?
zub
долгожитель
 
Сообщения: 2261
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение Лекс Айрин » 09.08.2016 12:13:26

zub писал(а):Одолжил)) Потому что так как сейчас это говнокод


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


не так уж и много... всего-лишь проверка на то, что этот компонент может принять текст. Да и ускорение непринципиальное.

А вот принципиально, например, сообщение некоего zub...

Так и не выходит победить TMemo.

нужно както заставить TMemo.Append() не добавлять автоматом #13#10 в конец кажной строки.
Вариант с ручным убиранием #13#10 с помощью SelStart, SelLength, ClearSelection не подошел изза сбивания положения скрола (теряет текущее положение и показывает текст с начала) и тормознутости на больших текстах.

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

и, кстати, текущее положение в тексте восстановить легко, просто сохраняя SelStart в отдельную переменную. Даже если будет легкое несовпадение, то это ерунда.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4097
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение zub » 09.08.2016 13:08:13

на самом деле, именно здесь пофиг. Если начнет тормозить таймер, то можно просто увеличить время "тика".

Ок. пофиг.
Запустил lexeditor. В нормальном редакторе (kate) скопировал в клипборд большой фрагмент текста (война и мир толстого).
Интересно, почему lexeditor неожидано повис и висит уже минут 5? Давай поинтересуемся что в данный момент в нем происходит:
Код: Выделить всё
#0 ?? at :0
#1 ?? at :0
#2 ?? at :0
#3 FT_Load_Glyph at :0
#4 QFontEngineFT::loadGlyph(QFontEngineFT::QGlyphSet*, unsigned int, QFixed, QFontEngine::GlyphFormat, bool) const at :0
#5 QFontEngineFT::recalcAdvances(QGlyphLayout*, QFlags<QTextEngine::ShaperFlag>) const at :0
#6 ?? at :0
#7 ?? at :0
#8 ?? at :0
#9 ?? at :0
#10 QTextEngine::shapeTextWithHarfbuzz(int) const at :0
#11 QTextEngine::shapeText(int) const at :0
#12 QTextEngine::shape(int) const at :0
#13 QTextLine::layout_helper(int) at :0
#14 ?? at :0
#15 ?? at :0
#16 ?? at :0
#17 ?? at :0
#18 ?? at :0
#19 ?? at :0
#20 ?? at :0
#21 QTextControl::blockBoundingRect(QTextBlock const&) const at :0
#22 ?? at :0
#23 QTextControl::ensureCursorVisible() at :0
#24 QTextControl::insertFromMimeData(QMimeData const*) at :0
#25 PASTE(0x7ffff7f90f30) at qt/qtwidgets.pas:10173
#26 PASTE(0x7fffe37df910, 0x7ffff7f91350) at qt/qtwsstdctrls.pp:1060
#27 PASTEFROMCLIPBOARD(0x7ffff7f91350) at include/customedit.inc:276
#28 TIMER1TIMER(0x7fffffff9490, 0x1) at main.pas:846
#29 ?? at :0
#30 ?? at :0
#31 ?? at :0
#32 ?? at :0
#33 ?? at :0
#34 ?? at :0
#35 ?? at :0

Объяснять что такое FT_Load_Glyph и откуда эта функция надо? Ловко ты определил текст в буфере или не текст))

А вот принципиально, например, сообщение некоего zub...

Сколько лет этому сообщению? я выше описал результат своего ковыряния с тмемо, вполне возможно он не соответствует сейчасному положению вещей.
Мне просто нужно было чтоб перевод строки не добавлялся после последней строки.

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

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

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

Сообщение Лекс Айрин » 09.08.2016 14:02:23

zub писал(а):скопировал в клипборд большой фрагмент текста (война и мир толстого).
Интересно, почему lexeditor неожидано повис и висит уже минут 5?


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

zub писал(а):Сколько лет этому сообщению? я выше описал результат своего ковыряния с тмемо, вполне возможно он не соответствует сейчасному положению вещей.


увы, ничего не изменилось(((

zub писал(а):Эх... сколько страниц уже намотано а вшивый про баню))


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

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

zub писал(а):Чтоб пошарится в клипборде, повставлять-поудалять фрагменты текста и еще много для чего тмемо ненужно

да ладно... предлагаешь печатать не канвасе?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4097
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение zub » 09.08.2016 15:49:19

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

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

да ладно... предлагаешь печатать не канвасе?

Если бы работа с огромными текстами нужна была бы постоянно - предложил бы.
Пока предлагаю только отказаться от
А почему бы и нет? Или мы слишком гордые чтобы пользоваться методом компонента? Ладно, заменю.

на самом деле, именно здесь пофиг.

и подобной риторики
zub
долгожитель
 
Сообщения: 2261
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение azsx » 09.08.2016 17:25:13

от меня ускользает сама суть вашего спора (не слежу), но
интересно много ли находится... слишком умных людей, которые копипастят "войну и мир"?

да, есть такие. Это весьма немного как мне кажется.
зы
в интернетах есть статьи как интернет страницы пухнут. Вроде 9 мб в среднем уже (или 2,5, забыл).
Я парсю интернет (БД изучаю). У меня около 8 млн страниц главных. Пока я считал в среднем получалось около 22 кб на страницу, но на деле в интернете очень много пустых страниц. На деле размер гораздо больше многих.
главное, редакторы для небольших текстов не просто есть - их навалом.
зызы
хотя я лично врядли буду юзать ваш редактор.
azsx
энтузиаст
 
Сообщения: 896
Зарегистрирован: 16.11.2015 06:38:32

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

Сообщение Лекс Айрин » 09.08.2016 18:31:47

azsx писал(а):от меня ускользает сама суть вашего спора (не слежу),


Речь всего-лишь о своевременности и необходимости оптимизации в определенных местах.

azsx писал(а):главное, редакторы для небольших текстов не просто есть - их навалом.

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

azsx писал(а):хотя я лично врядли буду юзать ваш редактор.


Это не так важно. Это, если честно, разработка для собственного использования.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4097
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение azsx » 09.08.2016 18:37:04

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

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

в нотепад++ под винду я стараюсь не пихать файлы больше 500 мб. Хотя, как говорил Павлик, кого я обманываю, я тупо добавляю в виртуалку памяти, на хосте 32 гб и всё равно, из последних сил, вопреки всему, когда мне это надо :)
---
захотел глянуть на ваш редактор. Чтобы запустить как проект, надо ставить freebutton модуль. Запустил exe, ошибка
microsoft visual studio
microsoft visual studio 2010 shell
Недопустимые данные лицензии. Требуется переустановка.
Это можно решить как-то малой кровью?
azsx
энтузиаст
 
Сообщения: 896
Зарегистрирован: 16.11.2015 06:38:32

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

Сообщение Лекс Айрин » 09.08.2016 18:58:21

azsx писал(а):Это можно решить как-то малой кровью?


Конечно. Поменять тип кнопки 'OK' в форме лицензии на обычную или совсем ее (форму) удалить. Больше нигде FreeButton не используется. Я ее уберу и завтра-послезавтра постараюсь обновить код.. обновлю код.

azsx писал(а):Запустил exe, ошибка
microsoft visual studio
microsoft visual studio 2010 shell
Недопустимые данные лицензии. Требуется переустановка.


Странно... VS не использую.

Добавлено спустя 1 час 17 минут 24 секунды:
Выложен исправленный вариант под той же версией.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4097
Зарегистрирован: 19.02.2013 16:54:51

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru