В том числе клиентские файлы для общего файла

StackOverflow https://stackoverflow.com/questions/3717175

  •  02-10-2019
  •  | 
  •  

Вопрос

Хорошо, поэтому у меня есть 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 на условные определения:

Условные определения оцениваются только тогда, когда исходный код перекомпилирован. Если вы измените статус условного символа, а затем восстановите проект, исходный код в неизменных устройствах не может быть перекомпилирован. Используйте проект | Создайте все проекты, чтобы убедиться, что все в вашем проекте отражает текущее состояние условных символов.

Другие советы

Если они разные, они больше не совсем общий файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top