В том числе клиентские файлы для общего файла
Вопрос
Хорошо, поэтому у меня есть 2 проекта для игры. Один - это сервер, и один клиент. Я держу общие подразделения в общей папке, которую я использую для включения в мой проект Client / Server. Однако есть проблема: у меня есть общий файл, который нужен другой файл для клиента / сервера. Пример: MySharedLib необходимо печатать на консоли, однако Client / Server Console отличается. Каковы мои варианты? Спасибо
Решение
В вашем общем файле вы можете использовать определять Директива компилятора
Например
{$IFDEF MYSERVER}
Writeln('Server'); // this code executes
{$ELSE}
Writeln('Client'); // this code does not execute
{$ENDIF}
Тогда в вашем сервере проекта определяется определение MyServer, а в вашем клиенте определяют MyClient One, затем, когда общий код разделяет, используйте оператор {$ ifdef).
Из Delphi Help на условные определения:
Условные директивы $ ifdef, $ ifndef, $ if, $ Enterif, $ owt, $ endif и $ ifend позволяют компилировать или подавлять код на основе состояния условного символа. $ Если и $ Endif позволяют вам базовую условную компиляцию на объявленные идентификаторы Delphi. $ IFOPT компилирует или подавляет код в зависимости от того, включен ли указанный компилятор коммутатора.
Это, однако, не будет работать, если общий код находится в DLL или любым другим видам выполненного общего ресурса, такого как пакет.
Из Delphi Help на условные определения:
Условные определения оцениваются только тогда, когда исходный код перекомпилирован. Если вы измените статус условного символа, а затем восстановите проект, исходный код в неизменных устройствах не может быть перекомпилирован. Используйте проект | Создайте все проекты, чтобы убедиться, что все в вашем проекте отражает текущее состояние условных символов.
Другие советы
Если они разные, они больше не совсем общий файл.