2015-03-22 4 views
3

Как лучше всего поддерживать совместимость пространств имен при использовании между Delphi 7 и Delphi XE7?Совместимость пространства имен в VCL для Delphi

Delphi 7 использует SysUtils, а Delphi XE7 использует System.SysUtils.

Это много загромождает код с помощью многих ifdefs, поэтому я хочу избежать его, если это возможно.

+1

Вы правы. Я имею доступ к XE6, но хочу поддержать D7 и переслать. –

ответ

6

В более поздних версиях Delphi, которые поддерживают префиксы пространства имен (я считаю, что это XE2 и выше), вы можете определить пространства имен в параметрах проекта.

Project Options > Delphi Compiler > Unit scope names

Тогда вам не нужно будет включать эти префиксы в вашем пункте использования.

По умолчанию новые проекты будут автоматически включать большинство из них для вас. Однако, если вы обновляете старый проект, особенно пакет, они могут не заполняться по умолчанию. У меня было an incident, где случайным образом Delphi начал сбой компиляции, поскольку в этих устройствах отсутствовали префиксы пространства имен.

+0

Я не думаю, что это было случайно. Ответ правильный! –

+0

@ David Ну, это появилось из ниоткуда, даже не внося никаких изменений, которые могли бы спровоцировать это. «По крайней мере, кажется случайным». –

+0

Что произойдет, так это то, что вы определили имена областей единицы в одной конфигурации и переключились на другую. Эта часть идеи и компилятора прочная. –