最近开发一个应用程序,遇到这样一个问题:程序由一个dll和一个主程序组成,dll中和主程序中都用到了很多相同的参数类型,于是将公用的参数类型单独编写了一个Unit,比如叫DataTypes.pas。但是,在dll工程中和主程序工程中uses这个单元的时候,需要DataTypes.pas单元知道,现在是被谁引用,从而能够在编译的时候稍微有所不同。我现在一直使用{$IFDEF xxDll}来实现,这样非常不方便,每次切换编写dll和主程序的时候,就要在DataTypes.pas单元头上写上或是删除{$DEFINE xxDll},因为{$DEFINE}只对当前.pas起作用。
有没有一种方法,使得在当前工程中的某一个文件中{$DEFINE}一个什么东西,而使当前工程中的起他文件中的{$IFDEF}也受到影响?
有没有一种方法,使得在当前工程中的某一个文件中{$DEFINE}一个什么东西,而使当前工程中的起他文件中的{$IFDEF}也受到影响?
解决方案 »
- char控件画图 我的数据都是正数 放大看某个数时 下面的负数表格怎么样让它不显示呢?目的就是让它从0开始!
- 求TreeView和Timer的全部属性与方法
- 如何彻底删除TDBEdit
- 大家好,问个简单的问题!但也不简单,进来看一下好吗?谢谢`!
- 一个循环的大问题
- Delphi有那些比较好的书??高手指教!!
- 亲问键盘上“上”“下”“左”“右”在Delphi中怎么判断?
- 我自己重载了1下消息,该如何声明?
- MSSQL7.0高分求救(300分)一定加,现在只让给20
- 一个相当难的问题,真的很难。
- QuickRep打印发票问题?
- 我做的一个类似于SPY++的工具软件。大家看看哈,但愿对大家有用,参与有分。
可以在公用的参数类型所在Unit中设置一个变量(如CallerIsDll: Boolean)。Application或者dll使用时,给它设置不同的值。
可以将CallerIsDll定义为全局变量,这样可以直接设置值;也可以设置为局部变量,然后让它所在Unit公开一个过程,通过调用该过程给CallerIsDll设置值。—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————