Директива компилятора Delphi Region - обратно совместимые файлы модулей? - PullRequest
4 голосов
/ 19 апреля 2009

Учитывая желание использовать полезную директиву компилятора Region в файлах модулей, каков наилучший подход, позволяющий использовать эти же модули в предыдущих версиях Delphi? Кажется, нет «приличного» подхода. (Требуемая версия IDE - Delphi 7)

Мне нравится, когда Regions выше определений методов, чтобы скрыть / отобразить справку по определениям методов и комментарии к истории версий, но мне придется окружать директивы Region другими директивами компилятора, что в некотором роде убивает «чистоту» директив компилятора региона.

Я полагаю, что препроцессор мог бы быть написан для закомментирования всех директив Region / EndRegion, если используется версия Delphi, которая не поддерживает регионы ... и добавить потом обратно для более поздних версий?

Я не на 100% перешел на Delphi 2009 и мне нужно поддерживать несколько версий IDE.

Ответы [ 3 ]

10 голосов
/ 19 апреля 2009

Я предполагаю, что D7 не хочет копировать {$ REGION} или {$ ENDREGION}? У меня установлен только D2007 / 9, и я не могу это проверить.

Попробуйте это:

{$IFDEF undef}{$REGION 'bla'}{$ENDIF}
//some code
{$IFDEF undef}{$ENDREGION}{$ENDIF}

Редактор D2009 создает регион, как и ожидалось. D7 должен игнорировать $ REGION / $ ENDREGION, если значение undef не определено.

1 голос
/ 20 апреля 2009

Существует несколько компонентов для улучшения редактора Delphi (7), которые предоставляют что-то вроде этого. Я думаю GExperts делает.

Если вы согласны с влиянием на ваш код, вы можете рассмотреть {$ I} для разделения больших файлов.

0 голосов
/ 07 ноября 2018

Вы можете использовать следующий код:

{$IF CompilerVersion >= 17} // The $REGION directive is available since Delphi 2005
{$REGION 'RegionName'}
{$ENDIF} 

// codeblock

{$IF CompilerVersion >= 17} 
{$ENDREGION 'RegionName'}
{$ENDIF}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...