Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > SynUniHighlighter и SynEdit > Работающая версия компонента UniHighLighter здесь!


Автор: StranikS 28.5.2013, 19:30
В связи с тем, что проект UniHighLighter приказал долго жить и данная секция форума по сути находится в летаргическом состоянии, то, как следствие, здесь нет ни файлов ни рабочих ссылок. Поэтому потратив пару дней уже неделю, я все же нашел насобирал рабочих исходников, которые ниже и привожу. Архивы запакованы 7-zip c LZMA2, распаковывать через 7-zip 9.20 или WinRaR 4.10 или более новые их версии

Компоненты для старых не юникодовых версий Delphi:
  • Пакет подсветки синтаксиса SynEdit 2.0.6 - http://rghost.ru/46404537 (найден мной http://sourceforge.net/projects/synedit/files/1%20-%20Stable%20Releases/SynEdit-2_0_6.zip/download, последний раз обновлялся 11.07.2007).
  • Компонент UniHighLighter:
    • Версия 1.0 с примерами и старым редактором *.hgl файлов - http://rghost.ru/46404965 (точная версия не известна, файлы датируются 2003/02/01, авторы Fantasist и Vit, не распознает *.hgl файлы более поздних версий).
    • Версия 1.8 с поддержкой xml-формата *.hgl файлов - http://rghost.ru/46404538 (файлы датируются 2004/08/14, авторы Fantasist, Vit и Vitalik, требует предварительной установки XML-парсера из папки \UniHighLighter\XMLParser).
    • Версия 2.0.X, но думаю что это 2.0.4b, идет со встроенной поддержкой xml-формата *.hgl файлов - http://rghost.ru/46404542 (файлы датируются 2006/07/19, авторы Fantasist, Vit, Vitalik и Quadr0, парсер xml-файлов уже встроен).
  • База *.hgl файлов для подсветки 332 разных языков и их вариаций - http://rghost.ru/46404543 (файлы не xml-формата, также там лежит редактор highlights.exe для их редактирования).
Компоненты для юникодовой Delphi 2009:
  • Пакет подсветки синтаксиса UniSynEdit Delphi2009 - http://rghost.ru/46596464 (найден мной тут на форуме).
  • Портированная под юникод версия компонента UniHighLighter 2.0.4b - http://rghost.ru/46404965 (найдена там же).
И отдельно выкладываю почивший в бозе http://yaoqiaofeng.blog.163.com/blog/static/233807902007101974839201/ китайского программиста по доработке компонентов пакета SynEdit со встроенным UniHighLighter и кодфолдингом из http://mystix.sourceforge.net/code_folding.html Mystix
  • Пакет SynEditStudio 5.8Fix3 - http://rghost.ru/46596462 (последнее обновление конец 2008 года, совместим со всеми Delphi начиная с Delphi5 до Delphi2009, в этом пакете есть все элементы из TSynEdit c поддержкой указанных выше функций и встроенным UniHighLighter 2.0.4b, однако ключевым моментом пакета является новый компонент TSynEditor - это полнофункциональный редактор на базе простого TSynEdit, имеет встроенные функции поиска, замены, подсветки, проверки орфографии и содержит уже готовые формы для этого и вспомогательные компоненты, но.... вот тут то и косячек, на эти формах надписи на китайском как результат видим '???', потому если им пользоваться, то нужно при установки пакета все формы отредактировать и привести в нужный вам вид. В принципе им можно и не пользоваться, а брать как и раньше просто TSynEdit и другие компоненты иже с ним.).
  • Так же в архиве идут наборы подсветок версии 2.0 в формате XML с поддержкой кодфолдинга! Редактировать файлы и делать новые можно с помощью редактора Highlighters\UniEdit.exe, у него главная форма на китайском, но сам редактор родной на английском.
Пример установки на Delphi 6.0 (6.0.240) Update Pack 3 последней версии пакетов (на другие версии ставить не пробовал):
  • Распаковываем в Projects\Bpl\ архивы SynEdit 2.0.6.7z и UniHighLighter 2.0.4b for SynEdit.7z
  • Добавляем пути к папкам \SynEdit\Source\ и \UniHighLighter\Component Source\ в окружение среды (Tools - Environment Opt - Library - Library Path - ...)
  • Открываем файл \SynEdit\Packages\SynEdit_R7.dpk. Компилируем, закрываем не сохраняя.
  • Открываем файл \SynEdit\Packages\SynEdit_D7.dpk. Компилируем, инсталлим, закрываем не сохраняя.
  • Теперь ставим \UniHighLighter\SynUniSyn_D7.dpk.
  • Проверяем, кидаем на форму из вкладки SynEdit компоненты SynEdit и SynUniSyn, затем в обработчике создания формы прописываем:
    Код

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    SynEdit1.Highlighter:=nil;
    SynUniSyn1.MainRules.Reset;
    SynUniSyn1.MainRules.clear;
    SynUniSyn1.LoadFromFile('<любой hgl-файл>');
    SynEdit1.Highlighter:=SynUniSyn1;
    end;
Все файлы по ссылкам можно скачать https://yadi.sk/d/RgcCA2iP3SaDuz.

Автор: StranikS 26.7.2013, 20:52
С моими результатами применения компонентов из китайского пакета SynEditStudio 5.8Fix3 на Delphi 6.0 (6.0.240) Update Pack 3 можно
ознакомиться http://www.koreanrandom.com/forum/topic/4691-. Это проект текстового редактора XCPad, для редактирования конфиг-файлов XVM-мода игры WorldOfTanks.

Автор: Sanchezzz 28.8.2013, 12:14
Создайте лучше репозиторий на Gidhub что бы с бедо-хостингов опять не потерять.

Автор: Samotnik 15.9.2013, 03:33
кто здесь?  smile 

Автор: MassDefect 8.10.2013, 11:11
Спасибо за кучку ссылок на мёртвый проект. Версия для Delphi 2009 не завелась на XE2. Пытаюсь реанимировать. Судя по исходникам, компонент даже не пытались подогнать под юникод: файлы hgl сохраняются/грузятся потоком без разбора, анси кодировка там или юникод; один только этот код:
Код

 //Fill remaining table
 for i:=0 to 255 do
 if SymbolList[char(i)]=nil then
 begin
  if  char(i) in fTermSymbols then
    SymbolList[char(i)]:=fDefaultTermSymbol
  else
  if char(i) in ['0'..'9'] then
    SymbolList[char(i)]:=fNumberSymbol
  else
    SymbolList[char(i)]:=fDefaultSymbols;
 end;

кричит "я работаю только с ANSI !".
В общем, если и лечить компоненту, то только почти полным переписанием, над чем сейчас и работаю (пока переписал только загрузку/сохранение hgl-файлов, разбираюсь что там и как устроено).

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

Может зря я это всё делаю и есть какой-то "живой", работающий на XE вариант компонента подсветки синтаксиса?

Автор: StranikS 15.10.2013, 15:11
Цитата(MassDefect @ 8.10.2013,  11:11)
Судя по исходникам, компонент даже не пытались подогнать под юникод

Может зря я это всё делаю и есть какой-то "живой", работающий на XE вариант компонента подсветки синтаксиса?

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

Да, т.е., нет - в реальности аналогов этого компонента просто нет. Если переписываете под юникод, то за исходник берите версию из китайского пакета, она самая последняя и жила до 2009 г. если не ошибаюсь. Там версия hgl вроде 2.1 с поддержкой кодфолдинга
, встроено сворачивание кода и море багов пофиксено...  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)