|
|
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Добрый день! Все вы видели как CnPack выделяет линиями блоки begin и end. Кроме того они не обязательно могут находиться друг под другом и к тому же иметь "вложенные" блоки. Кто-нибудь пытался реализовать подобное? Мой код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:01 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
ещё немного, ещо чу-чють и ты на пишешь SynEdit Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:04 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
// Поиск слова BEGIN, начиная от верхней видимой линии А что BEGIN не может быть выше ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:12 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
DimaBr, конечно может... Предлагаете выполнять поиск, начиная с первой строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:17 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Кроме того, при добавлении новой пары: begin - end будет увеличено количество строк и прийдется все пересчитывать, либо вешать подобную процедуру на событие OnChange. А как быть с вертикальной плохой прокрутки?, ведь даже если не прибавлять строки, следует сделать полную перерисовку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:25 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Есть идеи? Или написать базу данных легче, чем рисовать в Memo ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:28 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
18.09.2019 15:28, Linux_64 пишет: > Есть идеи? Или написать базу данных легче, чем рисовать в Memo ? Вы рисуйте, вы рисуйте, вам зачтётся, Что гадать нам удалось, не удалось. Ничего, что мы чужие, вы рисуйте, Я потом, что непонятно, объясню. (C) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:33 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Да ладно вам, конечно зачтется. Я вот подумал, если завести ещё 4 переменных, тогда можно пройтись циклом снова и найти вторую пару begin - end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:44 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Linux_64Я вот подумал, если завести ещё 4 переменных, тогда можно пройтись циклом снова и найти вторую пару begin - end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:47 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
А если я напишу Abegin ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:48 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Возможно это сработает, и у меня будет две линии на две пары, но как сделать привязку, чтобы "свой" begin соответствовал "своему" end и линия прорисовывалась правильно, включая внутренние конструкции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:49 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
DimaBr, но ведь ABegin не является ключевым словом, поэтому линия в этом случае не должна прорисовываться по-умолчанию, но стоит только убрать первую букву А и все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:55 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
а строковые литералы? а комментарии? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:56 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
не должна, но у вас то рисуется !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 15:56 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Linux_64Есть идеи? Или написать базу данных легче, чем рисовать в Memo ? все велосипеды уже написаны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:03 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
DimaBr, вы правы, рисуется даже если написать sssBeginzzz... Хм, в этом случае следует найденное слово проверять по длинне, что бы исключить "мусор" А вот на счёт комментариев и прочих литералов, это вообще загадка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:03 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Linux_64по длинне Не по длине, а на наличие разделителей до и после. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:07 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
18.09.2019 16:07, wadman пишет: > Не по длине, а на наличие разделителей до и после. зонудо! (С) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:10 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Док, зачем мне SynEdit ? Когда мы уже научимся писать что-нибудь сами и не копировать это у америкосов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:17 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
18.09.2019 16:17, Linux_64 пишет: > Когда мы уже научимся писать да. нам тоже интересно. когда ж вы уже наконец научитесь писать?! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:24 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
По-поводу наличия пробелов до и после, идея хорошая. Можно попробовать сделать строгое соответствие слова, включая пробелы по-бокам, хотя опять таки слово может начинаться сразу в начале строки без пробела. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:29 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
А если я явно укажу, что мне нужно найти строгое соответствие слова, это исключит "мусор" типа aBegin или begin9 или begin_22 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 16:59 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Так, если указать дополнительное условие поиска слова, мы исключаем лишний мусор. Линия прорисовывается, причём строго вертикально, независимо от того, был ли сдвинут end в сторону или нет. Кроме того, зная где заканчивается линия, мы можем дорисовать горизонтальную линию до слова end с захватом +1 символ "e". При прокрутке текста, вертикальной полосой, линия перерисовывается, но если begin ушёл вверх за видимую часть строк в редакторе, то и сама линия начинается из ниоткуда. Кроме того, мне не очень нравиться эта конструкция: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 18:08 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
В любом случае, одна пара уже выделяется, даже при прокрутке строк, ещё немного потестирую. Но как быть с внутренними блоками? Прибавлять по 4 переменных на каждую пару? Может завести массив из integer, вычислить общее количество одних слов и общее других? А ещё наверное добавить в условие поиска знаки комментариев // и {} для исключения из поиска тех слов, которые находятся внутри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 18:15 |
|
||
|
Выделение блоков begin - end в Memo
|
|||
|---|---|---|---|
|
#18+
Linux_64В любом случае, одна пара уже выделяется, даже при прокрутке строк, ещё немного потестирую. Но как быть с внутренними блоками? Прибавлять по 4 переменных на каждую пару?... Да, конечно. Так будет красиво. Но ведь может быть и так: Код: pascal 1. 2. 3. 4. ...в любом случае, вложенность блоков не может быть глубже шестнадцати. 16*4 = 64 переменных. Фигня, зато код красивый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=62&tid=2039034]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 339ms |

| 0 / 0 |
