| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > SynUniHighlighter и SynEdit > Неработает кусок Api-функции или |
| Автор: ActioN 10.4.2005, 00:45 | ||
Вот столкнулся с проблемой. Использую TSynEdit+Hightlighter. Мне необходимо сделать как в билдере, ... к примеру компилируется код в билдере, находятся ошибки, в нижней части редактора кода появляется окно со списком ошибок и при двойном клике на одном из items, редактор кода переходит на строку указанную в тексте ошибки. Как из текста взять цифры(номер строки) уже сделал, а вот как перейти на строку незнаю. Предложили мне такой код, который на RichEdit и Memo работает без проблем а в SynEdit отказывается работать:
|
| Автор: Vitalik 10.4.2005, 14:03 | ||||
ActioN, почему бы просто не использовать свойства SynEdit'a BlockBegin, BlockEnd и CaretXY для этого?
Добавлено @ 14:05 P.S. В твоём сообщении я только исправил тип кода с Delphi на C++ Builder. И вместо невостребованных тегов жирности в коде вставил комментарий. |
| Автор: Guest 11.4.2005, 00:58 |
| Vitalik, спасибо за исправления, попробовал откомилировать(Builder 6), выдает вот такие ошибки: [C++ Error] Unit1.cpp(22): E2268 Call to undefined function 'BufferCoord' [C++ Error] Unit1.cpp(22): E2034 Cannot convert 'int' to 'TPoint' [C++ Error] Unit1.cpp(23): E2034 Cannot convert 'int' to 'TPoint' [C++ Error] Unit1.cpp(24): E2034 Cannot convert 'int' to 'TPoint' [C++ Warning] Unit1.cpp(25): W8004 'Len' is assigned a value that is never used |
| Автор: ActioN 11.4.2005, 01:02 |
| +еще пришлось в файле SynEditHighlighter.hpp закоментировать две строчки, т.к. выдавались ошибки // __property AnsiString LanguageName = {read=GetLanguageName}; // __property TSynHighlighterCapabilities Capabilities = {read=GetCapabilities, nodefault}; |
| Автор: Vitalik 11.4.2005, 09:54 | ||||||
У меня сейчас Билдер не установлен, поэтому я написал как оно приблизительно должно выглядеть...
По видимому у тебя старая версия SynEdit. В ней вместо нового типа TBufferCoord для задания позиции курсора использовался стандартный тип TPoint У тебя какая версия SynEdit? Тебе нужна именно старая, но стабильная или ты просто не знал о существовании новой версии (правда беты)? Если что, советую скачать последнюю бету http://sourceforge.net/project/showfiles.php?group_id=3221&package_id=86350
Да, помню... Тоже была такая проблемка, когда под Билдером компонент ставил hpp файлы создаются самим билдером, попробую разобраться в чём тут дело... P.S. Зарегистрируйся на этом форуме Вот ссылочка: http://forum.vingrad.ru/index.php?act=Reg&CODE=00 |
| Автор: ActioN 12.4.2005, 01:34 |
| Vitalik, в readme написано: This is the first public version 1.0 of the SynEdit project. Скорее всего у меня версия 1.0 Мне нужна такая версия SynEdit чтобы нормально работала и чтобы реализовать работу куска этого кода, который на старой неработает И еще 1: т.к. я пользуюсь старой версией SynEdit и уже кучу кода написал под нее, будет ли он работать на новой версии? 2: В RichEdit есть SelLenght() и SelStart, а в SynEdit SelStart и SelEnd, неужели нету каких-нибудь быстрых команд для реализации "SelLength"?, а то на вычисление длинны слова через SelStart & SelEnd уходит больше времени. |
| Автор: Vitalik 12.4.2005, 15:53 | ||||||||
http://sourceforge.net/project/showfiles.php?group_id=3221&package_id=86350 вполне нормально работает. Я ей и сам пользуюсь Но этот код можно реализовать и на старой версии SynEdit'a:
Работать будет, но как минимум придётся везде поменять использование свойств CaretXY, BlockBegin, BlockEnd и др. Так как они поменяли их тип с TPoint на TBufferCoord, то BlockBegin.X нужно будет поменять на BlockBegin.Char и BlockBegin.Y - на BlockBegin.Line. А также тип соответствующих переменных с TPoint на TBufferCoord. Если же ты не использовал этих свойств, то этого и менять не надо будет. Вроде бы есть еще какие-то не стыковки, но они не такие существенные и исправляются легко. В целом - переход на новую версию SynEdit в любом случае того стоит
В http://sourceforge.net/project/showfiles.php?group_id=3221&package_id=86350 и более ранних версиях, кстати, уже есть такое свойтсво SelLength у SynEdit'a Еще один повод перейти на новую версию |
| Автор: ActioN 13.4.2005, 00:16 |
| Vitalik, скачал новую версию SynEdit с Sourceforge.net, воспользовался кодом из сообщения #2, и все заработало, спасибо. А можно узнать какие нововведения появились в новой версии (на русском желательно). Сам заметил что много hightloghter'ов появилось. И еще. Можно ли где-то достать описание команд SynEdit? |
| Автор: Vitalik 14.4.2005, 00:24 | ||||
Не встречал историй версий Есть на английском, но не в очень-то удобочитабельном виде
Этого тоже не знаю. К сожалению не слышал об этом... Добавлено @ 00:27 Но если будут вопросы - спрашивай здесь Чем сможем - поможем |
| Автор: ActioN 14.4.2005, 23:40 |
| Vitalik, ОК, буду знать. Повысил бы тебе репутацию за хорошие ответы и советы, дак у меня нету 100 постов. Поэтому просто Спасибо! |
| Автор: Quadr0 11.5.2005, 15:37 |
| ... |