Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > SynUniHighlighter и SynEdit > Вопрос по .inc файлам


Автор: Seldon 20.8.2006, 00:57
кто может объяснить следующее:
1. зачем в дистрибе лежит SynEdit.inc ?
2. за что отвечают опции из SynUniHighlighter.inc ? (я конечно догадываюсь, но хотелось бы услышать авторитетное мнение)

Автор: Vitalik 23.8.2006, 20:04
У меня сейчас нет доступа в интернет, отвечу 27 августа smile

Автор: Seldon 26.8.2006, 00:08
тему можно удалить

Автор: Vitalik 29.8.2006, 13:56
Цитата(Vitalik @  23.8.2006,  19:04 Найти цитируемый пост)
У меня сейчас нет доступа в интернет, отвечу 27 августа
Цитата(Seldon @  25.8.2006,  23:08 Найти цитируемый пост)
тему можно удалить

Идентичные высказывания и мои некоторые слова по этому поводу http://forum.vingrad.ru/index.php?showtopic=108562&view=findpost&p=836920 smile


M
Vitalik
Обсуждение моментов с inc-файлами будет в теме: "Вопросы, предложения и рассуждения".

Автор: Vitalik 3.9.2006, 17:06
Как я высказался в той теме "http://www.forum.vingrad.ru/index.php?showtopic=109343", я отвечу на вопросы этой темы здесь, чтобы и так уже огромная та тема сильно не разрасталась smile

Цитата(Seldon @  19.8.2006,  23:57 Найти цитируемый пост)
1. зачем в дистрибе лежит SynEdit.inc ?
Цитата(Seldon @  25.8.2006,  23:13 Найти цитируемый пост)
- зачем в дистрибе SynEdit.inc? потому что он юзаецца в SynUniHighlighter.inc? так правильнее будет юзать SynEdit'овский SynEdit.inc т.к. юзер (я например ) мог его изменить.

Дело в том, что раньше предпринимались попытки сделать exe-шный инсталлятор для компонента. И это в целом удалось сделать (http://unihighlighter.com/index.php?download=56), но тогда пришлось пойти на два не очень приятных момента:
1. Инсталлятор ни в какую не хотел находить SynEdit.inc, поэтому пришлось его скопировать в дистрибутив.
2. Установочные пакеты (*.dpk) должны были быть в папке Delphi, а не Packages.

Поэтому резонный вопрос: нужно ли делать exe-инсталлятор для компонента и стоит ли он того? smile

Цитата(Seldon @  19.8.2006,  23:57 Найти цитируемый пост)
2. за что отвечают опции из SynUniHighlighter.inc ? (я конечно догадываюсь, но хотелось бы услышать авторитетное мнение)

Многое об этих опциях файла SynUniHighlighter.inc можно прочитать на офф. сайте: http://unihighlighter.com/index.php?showpage=install&lang=ru

Цитата(Особенности установки UniHighlighter 2.0 Alpha)
  • Если вы не используете SynEdit из MyStix (который с поддержкой CodeFolding), то нужно закоментировать директиву {$DEFINE CODEFOLDING} в файле SynUniHighlighter.inc 
    Код
    {$I SynEdit.inc}
    //{$DEFINE CODEFOLDING} //comment
    {$DEFINE PROTECTED_ATTRIBUTES}
    {$DEFINE WRITABLE_ATTRIBUTE_NAME}

  • Чтобы можно было использовать экспорт текста с подсветкой в файлы HTML или RTF нужно "пропатчить" SynEdit. Для этого нужно кое-что поменять в файле SynEditHighlighter.pas: 

    • в классе TSynCustomHighlighter перенести поле fAttributes: TStringList; из секции private в секцию protected 
      Код
      TSynCustomHighlighter = class(TComponent)
      private
        //fAttributes: TStringList; //remove
        ......
      protected
        fAttributes: TStringList; //insert

    • в классе TSynHighlighterAttributes добавить для свойства Name возможность записи, то есть заменить его объявление на: 
      Код
      TSynHighlighterAttributes = class(TPersistent)
      ......
      public
        ......
        property Name: string read fName write fName;

    • Если же по каким-то причинам вы не желаете патчить таким образом SynEdit (хотя от этого он явно не пострадает), то нужно закомментировать две строчки в файле SynUniHighlighter.pas: 
      Код
      {$I SynEdit.inc}
      {$DEFINE CODEFOLDING}
      //{$DEFINE PROTECTED_ATTRIBUTES} //comment
      //{$DEFINE WRITABLE_ATTRIBUTE_NAME} //comment

Цитата(Особенности установки UniHighlighter 2.0 Beta1)
  • Если вы по какой-то причине не хотите использовать встроенный дизайнер (редактор, SynUniDesigner) для компонента, то нужно закоментировать директиву {$DEFINE INTERNAL_DESIGNER} в файле SynUniHighlighter.inc 
    Код
    {$I SynEdit.inc}
    {$DEFINE CODEFOLDING}
    {$DEFINE PROTECTED_ATTRIBUTES}
    {$DEFINE WRITABLE_ATTRIBUTE_NAME}
    {$DEFINE UNIDESIGNER18}
    //{$DEFINE INTERNAL_DESIGNER} //comment

  • Для выбора используемого дизайнера (1.8 или 2.0) используются директивы {$DEFINE UNIDESIGNER18} и {$DEFINE UNIDESIGNER20} соответственно (нужно использовать только одну из них)

Автор: Seldon 4.9.2006, 12:38
Цитата(Vitalik @  3.9.2006,  17:06 Найти цитируемый пост)
Поэтому резонный вопрос: нужно ли делать exe-инсталлятор для компонента и стоит ли он того? 

имхо установщик не нужен. единственная проблема при установке - решить, какие директивы из SynUniHighlighter.inc использовать. и то, что по дефолту включены директивы PROTECTED_ATTRIBUTES и WRITABLE_ATTRIBUTE_NAME и компонент не компилицца (ведь если эти директивы включены надо перед компиляцией отредактировать SynEditHighlighter.pas).
выход: включить в файл SynUniHighlighter.inc описание директив и по дефолту выключить PROTECTED_ATTRIBUTES и WRITABLE_ATTRIBUTE_NAME. в результате будет единственная проблема - по дефолту не будет работать экспорт. стоит в том же SynUniHighlighter.inc БОЛЬШИМИ буквами написать про это и что надо сделать для того, чтобы экспорт заработал. в результате ньюбы не будут спрашивать почему компонент не компилицца. а будут гораздо реже спрашивать, почему не работает экспрот. их достаточно будет отослать к файлу SynUniHighlighter.inc


чесно говоря не знаю. лично мне инсталлятор не нужен...

Цитата(Vitalik @  3.9.2006,  17:06 Найти цитируемый пост)
1. Инсталлятор ни в какую не хотел находить SynEdit.inc, поэтому пришлось его скопировать в дистрибутив.

вроде ничего сложного, берём из реестра Library path, ищем по всем папкам оттуда нужный файл...

Цитата(Vitalik @  3.9.2006,  17:06 Найти цитируемый пост)
2. Установочные пакеты (*.dpk) должны были быть в папке Delphi, а не Packages.

 smile а почему?

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