Совместное использование Delphi 1.0 и 2.0
Я ничего не слышал по поводу рекомендаций Borland относительно организации дискового пространства, но я лично для задания различного поведения использую ключи условной компиляции в одних и тех же исходных файлах. Если имеется ну очень много различий, я разделяю код на два отдельных модуля, а в списке использованных модулей также управляю подключением модулей с помощью этих ключей.
Примерно такую же схему я использую и при работе с компонентами: модули регистрации я размещаю в различных модулях, например, XxxReg.pas для Delphi 1.0 и XxxReg32.pas для Delphi 2.0. Формат файлов ресурсов в WIN32 также другой, что приводит к необходимости иметь соответствующие XxxReg.dcr и XxxReg32.dcr, содержащие иконки для палитры компонентов. В качестве альтернативы вместо двух DCR-файлов возможно использование единственного файла Reg.pas и двух RES-файлов, и директивы {$R ...}, обернутой в директивы условной компиляции, управляющие выбором загрузки одного из файлов. (Смотрите ниже дополнение от Dan Miser).
При переключении с Delphi 2.0 на 1.0, вы должны или сделать "build all", или создать bat-файл для удаления всех DCU файлов.
Наконец, вы можете задавать различные выходные (output) каталоги для каждого проекта в Delphi 1 и 2. С помощью данного способа вы можете хранить все DCU и EXE файлы в отдельных каталогах. Для этой цели в каталоге приложения я использую два подкаталога с именами 16Bit и 32Bit.
- Mike Scott.
Дополнение от Dan Miser:
В момент регистрации Delphi компонента в палитре компонентов, она ищет соответствуюшие файлы DCR (имеющие то же имя, что и модуль регистрации). Как мы знаем, затем происходит линковка. Поскольку Delphi не находит DCR-файл с подходящим именем, в нормальной ситуации он должен использовать иконку по умолчанию. Тем не менее, связывание файла ресурсов посредством директивы $R позволяет Delphi указать, что имеется иконка с тем же именем, что и у регистрируемого класса, таким образом Delphi удается установить связь между иконкой и компонентом.
Образец списка файлов компонента:
XXXREG.R16 16-битный DCR файл
XXXREG.R32 32-битный DCR файл
XXXREG.PAS Модуль регистрации компонента
unit XXXREG.PAS
interface
uses Classes;
procedure Register;
implementation
{$IFDEF WIN32}
{$R XXXREG.R32}
{$ELSE}
{$R XXXREG.R16}
{$ENDIF}
procedure Register
begin
{Здесь расположен ваш код регистрации}
end;
end.
|
[000923]