我正在使用Delphi开发64位应用程序,我将项目分成两个文件夹。一个用于我将用于GUI的组件,另一个用于非可视对象和主程序项目。 文件夹是分开的,因为我想利用其他项目中的一些组件。 Components文件夹显然位于库路径中。
现在我必须开发一个可视组件,它应该从Main文件夹中的一个单元(现在由BaseUnit调用)中读取一些属性。但是BaseUnit在64位asm中使用了一些代码,因为它对于组件来说是不可能的。 什么是最好的面向对象的方法,以克服这个问题?
我正在使用应该读取的对象的一些简化版本,以便组件能够从我需要的BaseUnit读取属性。我过去已经这样了,它有效,但我不知道是否有更实际的方法。一种可能是创建一个与组件和主程序兼容的基类,但我仍然不知道是否会为重构BaseUnit的设计付出代价。
我希望我以一种不可思议的方式解释我的问题^ _ ^ 先感谢您, 保罗
修改 非常感谢大家的答案,编译器IFDEF方法本质上是最简单的方法,但是...... 我想我正在寻找一种方法让我的组件在设计时存在,而不依赖于主项目。主项目的工作是将它们与自身的非可视部分联系起来。 这是因为我想从一个void项目构建一个GUI,只是将组件的属性与我正在研究的“引擎”的对象连接起来(我正在开发一个音频应用程序)。
所有这些建议都需要主文件夹位于组件项目的路径中。现在我正在尝试将虚拟单元放在Components文件夹中,这是BaseUnit的副本,只有我需要读取的属性。通过这种方式,我可以在运行时将组件链接到真正的BaseUnit。
答案 0 :(得分:2)
充分利用包含文件:
procedure BaseUnitProcThatUsesASM; assembler;
asm
{$I asmcode.inc}
end;
您可以将asmcode.inc放在特定于平台的文件夹中(例如i386和x86_64),并使用编译器宏作为包含路径。我实际上并不使用Delphi,但我认为Delphi有Free Pascal这样的东西。如果没有,您可以为每个平台创建2个项目文件,每个文件包含特定文件夹的路径。
不要重构不应重构的内容;)