0

我正在 Delphi 中开发一个 64 位应用程序,并将项目分为两个文件夹。一个用于我将用于 GUI 的组件,另一个用于非可视对象和主程序项目。文件夹是分开的,因为我想在其他项目中使用一些组件。Components 文件夹显然在库路径中。

现在我必须开发一个可视化组件,它应该从位于 Main 文件夹中的单元(现在称为 BaseUnit)中读取一些属性。但是 BaseUnit 使用 64 位 asm 中的一些代码,组件无法使用这些代码。克服这个问题的最佳面向对象方法是什么?

我正在使用一些应该读取的对象的简化版本,以便组件能够从我需要的 BaseUnit 中读取属性。我过去已经这样做了,它有效,但我不知道是否有更实用的方法。一种可能是创建一个与组件和主程序都兼容的基类,但我仍然不知道这样做的好处是否会支付重构 BaseUnit 设计的努力。

我希望我以一种可以理解的方式解释了我的问题^_^提前谢谢你,Paolo

编辑: 非常感谢大家的回答,编译器 IFDEF 方法本质上是最简单的方法,但是......我想我正在寻找一种方法让我的组件在设计时存在,而不依赖于主要项目。主要项目的工作是将它们链接到其自身的非视觉部分。这是因为我想从一个 void 项目构建一个 GUI,并将组件的属性与我正在处理的“引擎”的对象连接起来(我正在开发一个音频应用程序)。

所有这些建议都需要主文件夹位于组件项目的路径中。现在我试图将虚拟单元放在 Components 文件夹中,它们是 BaseUnit 的副本,仅包含我需要读取的属性。通过这种方式,我可以在运行时将组件链接到真正的 BaseUnit。

4

1 回答 1

2

善用包含文件:

procedure BaseUnitProcThatUsesASM; assembler;
asm
  {$I asmcode.inc}
end;

您可以将 asmcode.inc 放在特定于平台的文件夹中(比如 i386 和 x86_64),并使用编译器宏作为包含路径。我实际上不使用 Delphi,但我想 Delphi 有类似 Free Pascal 的东西。如果没有,您可以为每个平台创建 2 个项目文件,每个项目文件都包含特定文件夹的路径。

不要重构不应该重构的东西;)

于 2012-06-30T16:23:07.673 回答