2010-09-15 94 views
0

好的,所以我有2个游戏项目。一个是服务器,一个是客户端。我将共享单元保存到我用于包含在客户端/服务器项目中的共享文件夹中。但是有一个问题:我有一个共享文件,需要客户端/服务器的不同文件。示例:mySharedLib需要打印到控制台,但客户机/服务器控制台不同。我有什么选择?谢谢包含共享文件的客户端文件

回答

4

在你共享的文件,你可以使用define编译器指令

例如

{$IFDEF MYSERVER} 
    Writeln('Server'); // this code executes 
{$ELSE} 
    Writeln('Client'); // this code does not execute 
{$ENDIF} 

然后在你的服务器项目定义MYSERVER定义,并在客户端定义MYCLIENT一个,然后当共享代码单独使用一个{$ IFDEF)语句。

Delphi help on conditional definitions:

的条件指令$ IFDEF,$ IFNDEF,$ IF,$ ELSEIF,$ ELSE,$ ENDIF和$ IFEND允许您根据的状态编译或抑制码条件符号。 $ IF和$ ELSEIF允许您基于声明的Delphi标识符进行条件编译。 $ IFOPT根据是否启用指定的编译器开关来编译或取消代码。

但是,如果共享代码位于DLL或任何其他类型的编译共享资源(如程序包)中,则不会生效。

Delphi help on conditional definitions:

条件定义时,源代码重新编译仅评价。如果更改条件符号的状态然后重新生成项目,则可能不会重新编译未更改单元中的源代码。使用Project | Build All Projects确保项目中的所有内容都反映了条件符号的当前状态。

1

如果他们不同,他们不再是一个真正的共享文件。