Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 应该";图书馆径;指向包的源文件?_Delphi - Fatal编程技术网

Delphi 应该";图书馆径;指向包的源文件?

Delphi 应该";图书馆径;指向包的源文件?,delphi,Delphi,“库路径”应该指向包的源文件吗? Delphi7文档说是的。但是其他人说不:“库”路径应该只指向编译文件(.dcp、.dcu)和(如果需要)资源文件(.res、.dfm) 更新: 问题是,如果您不在“库路径”中添加包的路径,那么每次创建新的DPR项目时,您都必须手动收集包的路径(多个),并将其输入到项目的选项“浏览”框中,否则您将得到“未找到文件xxx.dcu”。这听起来不太好。多年来,我一直在库中添加所有路径,每次创建新项目时都不必手动添加路径 我的包是通用/全局的(不是特定于单个项目,而是

“库路径”应该指向包的源文件吗? Delphi7文档说是的。但是其他人说不:“库”路径应该只指向编译文件(.dcp、.dcu)和(如果需要)资源文件(.res、.dfm)

更新:

问题是,如果您不在“库路径”中添加包的路径,那么每次创建新的DPR项目时,您都必须手动收集包的路径(多个),并将其输入到项目的选项“浏览”框中,否则您将得到“未找到文件xxx.dcu”。这听起来不太好。多年来,我一直在库中添加所有路径,每次创建新项目时都不必手动添加路径

  • 我的包是通用/全局的(不是特定于单个项目,而是多个项目)
  • 我只使用一台计算机进行编程,所以我不关心代码的共享
  • 我在同一个文件夹中有PAS和DCU文件
  • 我不介意经常重新编译PAS文件。编译需要1-2秒,构建需要3-4秒
  • 相对路径是毫无疑问的,因为“Delphi(所有版本)似乎在打开文件时有时会更改工作目录,这反过来会弄乱相对路径(它们相对于工作目录,而不是.dpr(oj))。如果我注意到这一点,我会在工作目录中打开一个文件(使用file->open),一切都会恢复正常。”
  • 我习惯于在一天内大量编辑大多数软件包

Delphi 7在设置路径和官方文档为0时是如此混乱:(

更新:

我已经做了更改。它是有效的,但它还不够完美(或者至少不够优雅):

我说不,因为编译应用程序更快,因为DCU已经编译好了。

我建议使用“全局”库路径只指向您的“全局”库。如果.dcu是在.pas之前找到的,则将在不重新编译源代码的情况下使用它们。除非您经常修改库源代码,否则我将避免使用它,并且我不会用特定于应用程序的代码“污染”它。
IMHO特定于应用程序的dcu不应放在“全局”库路径中。您可以轻松使用“单元输出目录”要将dcu存储在每个应用程序的公共目录中,指向库路径的位置比指向已编译文件(dcu/dcp文件和exe/bpl文件)的输出路径的位置重要得多。

每个项目都应该有自己的输出路径。如果这样做,那么即使您将库路径指向源文件,二进制文件也将位于特定于项目的文件夹中,因此可以永远不会干扰其他项目

使用全局(环境选项)库路径时要小心。我的路径实际上是完全空的。甚至连$(BDS)这样的标准Delphi文件夹都没有\Lib在其中。为什么?因为它确保每个项目都需要在dproj中明确其对库的依赖关系。这意味着您可以加载和生成需要相同库的不同版本的项目,而不会出错,因为您的环境路径指向的库的版本与版本y不同我们的项目需要。这在调试时也非常有帮助,因为调试器将始终使用项目所需的版本,而不是全局环境路径所指向的版本

如果您的任何库都有可视组件,您仍然不需要在全局环境路径上使用它们。您只需要确保IDE使用的bpl来自您使用最多的版本。它是否是旧版本并不重要(除了它可能会导致dfm的内容发生更改之外,但源代码版本控制应该对此有所帮助)。您只需要IDE中的bpl,这样当您加载表单时它就不会向您发出呕吐声。事实上,我的IDE通常没有安装任何第三方组件(即使项目使用它们),但我不做太多dfm工作,当我需要更改表单pas文件中的代码时,我只告诉IDE忽略所有错误(但保留表单单元中的引用),并在提交时将所有更改还原到dfm


哦,我总是从源代码处编译。这样,如果我为库中的单个文件获得修补程序,我就不必经历整个安装过程,甚至不必重新编译组件包。我只需将更新的源文件放在适当的文件夹中,然后继续,就像什么都没有发生一样

另外,我在所有项目中都使用相对路径。我知道有些人遇到过这种情况,但我从未遇到过问题。可能是因为我从未在Windows资源管理器中双击打开任何文件,而是始终从IDE中打开,也可能是从资源管理器中拖放以查看(以前版本的)文件,而不使其成为项目的一部分。相对路径使加载和加载更容易创建项目副本,具有任意数量的工作空间(Perforce),并在它们之间切换,而无需“修复”dpr中的路径


以上所有这些都是我在许多不同的项目中学习到的实践,经常需要在我们自己的代码版本之间来回更改,这通常也涉及在库版本之间切换。

我下面描述的技术对我们很有效,因为对于我们使用的任何版本的Delphi,所有项目s使用相同版本的库

例如,我们有一个使用Delphi 6构建的分支(目前仍在积极开发)。我们的主干在一年多前迁移到Delphi 2009,然后在几个月前迁移到2010,不久将迁移到Delphi XE。但是主干中的所有项目都将使用相同版本的Delphi和相同版本的库