В вашем общем файле вы можете использовать define директиву компилятора
Например
{$IFDEF MYSERVER}
Writeln('Server'); // this code executes
{$ELSE}
Writeln('Client'); // this code does not execute
{$ENDIF}
Затем в вашем серверном проекте определите определение MYSERVER и в вашем клиенте определитеMYCLIENT, затем, когда разделяемый код разделяется, используйте оператор {$ IFDEF).
Из справки Delphi по условным определениям:
Условные директивы$ IFDEF, $ IFNDEF, $ IF, $ ELSEIF, $ ELSE, $ ENDIF и $ IFEND позволяют компилировать или подавлять код на основе состояния условного символа.$ IF и $ ELSEIF позволяют основывать условную компиляцию на объявленных идентификаторах Delphi.$ IFOPT компилирует или подавляет код в зависимости от того, включен ли указанный переключатель компилятора.
Однако это не будет работать, если общий код находится в DLL или любом другом совместимом совместном ресурсе, таком как пакет,
Из справки Delphi об условных определениях:
Условные определения оцениваются только при перекомпиляции исходного кода.Если вы измените статус условного символа, а затем перестроите проект, исходный код в неизмененных единицах может не перекомпилироваться.Используйте Project | Build All Projects, чтобы все в вашем проекте отражало текущий статус условных символов.