重组后未找到DFM

时间:2019-05-01 06:23:29

标签: delphi delphi-7 dfm

我有一个具有以下结构的Delphi 7项目:

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

除一个文件外,大多数源代码都在其他项目之间共享(尽管这无关紧要),所以我进行了一些重组,如下所示:

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

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

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

但是,.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选项可以正常工作,但不能编译。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

...应该改为...

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