我有一个具有以下结构的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选项可以正常工作,但不能编译。
答案 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},
...