【问题标题】:How to define custom variable for Delphi 7 search path in source code?如何在源代码中为 Delphi 7 搜索路径定义自定义变量?
【发布时间】:2016-07-20 12:00:31
【问题描述】:

我有一个 Delphi 7 项目,我将其他项目中使用的常用文件放入搜索路径中。我项目的不同版本需要使用不同版本的通用文件。我知道可以使用 Windows 环境变量,但是否可以在 .pas 文件中定义变量搜索路径?或者,我愿意接受一种变通方法。

例如:

const Version = '100';

【问题讨论】:

  • 它在源代码中没有任何好处。它需要对 IDE 可用。您可以使用完整或相对路径(项目->添加到项目)将其添加到 .dpr 文件,或手动编辑 .dpr 文件(项目->查看源代码)。为什么不能像往常一样把它放在每个项目的选项中?
  • 闻起来你应该用版本控制来做这个......
  • 如果您在代码文件名中包含版本号,您可以在您的 pas 文件的 uses 子句中引用它并在任何项目中使用特定版本。

标签: delphi delphi-7


【解决方案1】:

我知道可以使用 Windows 环境变量

或者IDE自带的环境变量,这样就不用乱搞windows环境了。但是是的,一般来说,您尝试做的事情只能使用环境变量来完成。

是否可以在 .pas 文件中定义变量搜索路径?

不,不是。这样的变量必须在 OS/IDE 层定义,而不是在代码层。

【讨论】:

  • 感谢您的建议。我只是意识到 IDE 环境变量是全局的,所以我不能为不同版本的项目的环境变量分配不同的值。每次加载不同版本的项目时,我都需要重置环境变量的值。你认为有办法解决这个问题吗?
【解决方案2】:

如果您不问太多,我将描述这是一种可能的解决方法。

假设有包含按日期或您想要的不同版本区分的文件夹。例如:Project_14-07-21, Project_15-07-21, Project_16-07-21

在这些文件夹中,您可以将常用文件夹与不同版本的文件放在一起。例如在任何:Project_16-07-21\Common

此时如果放弃dof文件中[Version Info]和[Version Info Keys]部分的信息,只需更改项目的文件cfgdof .

怎么样?简而言之:相对路径

在文件dof中搜索SearchPath在此以类似的方式更改:

搜索路径=..\DCU;DCU;..\Common;Common;$(DELPHI)\Lib;$(DELPHI)\JEDI\jvcl\lib\d7;$(DELPHI)\JEDI\jvcl\run; $(DELPHI)\JEDI\jcl\jcl\source\common

在文件 cfg 中以类似的方式更改:

-U"..\DCU";"DCU";"..\Common";"Common";"C:\Program Files (x86)\Borland\Delphi7\Lib";"C:\Program Files (x86)\Borland\Delphi7\Source\Indy" -I"..\DCU";"DCU";"..\Common";"Common";"C:\Program Files (x86)\Borland\Delphi7\Lib";"C:\Program Files (x86) \Borland\Delphi7\Source\Indy" -R"..\DCU";"DCU";"..\Common";"Common";"C:\Program Files (x86)\Borland\Delphi7\Lib";"C:\Program Files (x86) \Borland\Delphi7\Source\Indy"

进行必要的更改以使其在意图上有用。

“Common”是指各个版本项目的内部文件夹“Common”。

您可以将“..\Common”替换为在任何版本中都不会更改的硬文件。

显然文件 dpr 也会根据路径而改变

例如: …… '..\Common\JclSysUtils.pas' 中的 JclSysUtils, …… 'Common\uTest.pas' 中的 uTest;

{$R ..\Common\Project.tlb} {$R ..\Common\Project.res}

此时,您可以通过批处理自动执行所有这些操作。

举个例子:我已经实现了通过拖动dpr文件来编译的批处理文件。 这些是我们理解其目的的名称:CC_IDE_Off.bat, CC_IDE_On.bat, CC_Debug_OnOff.bat。通过将 i 文件 cfg e dof(无论是否调试)复制到 dpr 文件的文件夹中来工作的这些批处理,即使没有将组件安装到 IDE 中,您也可以编译完整的项目。

【讨论】:

  • @Ivan 感谢您的优雅更改。好工作。我真的很感激。
  • 由于疲倦,我省略了一些细节:在路径中缺少“Common” ecc。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
相关资源
最近更新 更多