0

我有一个具有这种结构的 Delphi 7 项目:

.dpr
foo.pas
*.pas
*.dfm
Bin/
debug/

大多数源代码,除了一个文件,在其他项目之间共享(尽管这不相关),所以我做了一些重组,看起来像这样:

.dpr
UniqueFile/
    foo.pas
Common/.pas
    *.pas
    *.dfm
Bin/
debug/

我用新结构更改了 .dpr 中的路径,但是当我出于某种原因尝试编译时,它在文件夹中找不到 .dfm 文件之一Common。显示的错误是:

[Error] File not found: 'SomeFile.DFM'

但是,the.pas和对应.dfm的都在该文件夹中。

我错过了一些配置吗?


编辑:此文件包含在.dpr文件中,如下所示:

uses
   ...
   SomeFile in 'Common/SomeFile.pas',
   ...

EDIT2:我只将 SomeFile.dfm 文件复制到根文件夹,并且正在编译。出于某种原因,它仍在旧路径中寻找该文件?

EDIT3:我已经包含了@ken-white 指出的内容,但没有运气。所以现在 .dpr 看起来像这样:

uses
   ...
   SomeFile in 'Common/SomeFile.pas' {ChildFrame},
   ...

我还仔细检查了这一行SomeFile.pas

{$R *.DFM}

我应该指出的另一件事是 Build 选项可以正常工作,但不能编译。

4

2 回答 2

2

您缺少 .dpr 文件中的表单条目,该条目告诉 IDE 存在关联的 .dfm。

当您创建新的 VCL Forms 应用程序时,IDE 会将以下条目写入项目文件:

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

该信息是{Form1}告诉 IDE 查找包含表单信息的 .DFM 文件。您已经说过 .pas 文件在您的新Common文件夹中,但没有告诉它它也应该在那里寻找 .dfm。IDE 改为在项目文件夹中查找它,但在那里找不到。当然,直到您将其复制到项目文件夹中。:-)

将您的 .dpr 更改为阅读

uses
   ...
   SomeFile in 'Common/SomeFile.pas' {FormClass},

替换为您单位{FormClass}中的表单变量的名称。SomeFile

于 2019-05-01T12:28:31.503 回答
1

在我看来,您的问题(至少到目前为止)是您使用的是正斜杠而不是反斜杠。

uses
   ...
   SomeFile in 'Common/SomeFile.pas' {ChildFrame},
   ...

……应该是……

uses
   ...
   SomeFile in 'Common\SomeFile.pas' {ChildFrame},
   ...
于 2019-05-01T15:03:43.067 回答