【问题标题】:Path for Delphi librariesDelphi 库的路径
【发布时间】:2010-03-15 02:57:25
【问题描述】:

你们在哪里存储第 3 方(和您自己的)组件?

您是否为每个 Delphi 版本保留单独的副本?

多年来,我一直在使用c:\program files\borland\delphi7\lib\,即使是在 Delphi 2006、2007、2009 和 2010 中,就像这样:

c:\program files\borland\delphi7\lib\AggPas\
c:\program files\borland\delphi7\lib\DeHL\
c:\program files\borland\delphi7\lib\DevExpress\
c:\program files\borland\delphi7\lib\FastCode\
c:\program files\borland\delphi7\lib\FastMM\
c:\program files\borland\delphi7\lib\Fundamentals\
c:\program files\borland\delphi7\lib\Graphics32\
c:\program files\borland\delphi7\lib\JCL\
c:\program files\borland\delphi7\lib\JVCL\
c:\program files\borland\delphi7\lib\OmniThread\
c:\program files\borland\delphi7\lib\Raize\
c:\program files\borland\delphi7\lib\TeeChartPro\
c:\program files\borland\delphi7\lib\TurboPower\
c:\program files\borland\delphi7\lib\VirtualTreeView\
c:\program files\borland\delphi7\lib\Zeos\

但是,现在我什至不再使用 Delphi7(它可以做什么,2010 不能?),所以这条路已经没有多大意义了。 我即将在我的家用机器上安装 windows7,所以我正在考虑这样的事情:

c:\src\DelphiLib\

有更好的想法吗?

【问题讨论】:

  • 编译 16 位可执行文件?并不是说任何人都需要这样做了,请注意...
  • 哪里有对 16 位可执行文件的引用?
  • >> 我什至不再使用Delphi7了(它有什么2010不能做的?)答案 - 远程调试。
  • 2 年后的今天... 报告一下:我已经适应了`c:\dev\lib`

标签: delphi path


【解决方案1】:

我有一个目录,我可以在其中进行所有结帐。组件(版本化)只是另一个检查 (**)。

mysvndir\components                         (D7 components)
mysvndir\components2006                     (D2006 components)
mysvndir\components2009                     (D2009 components)
mysvndir\trunk                              (trunk of framework)
mysvndir\flex                               (check out of flex project that 
                                                is in a branch)

delphi 项目都设置了相对路径。组件路径在 delphi 中的 options->environment 下是硬编码的。

mysvndir 可以位于不同的驱动器(或目录级别)上,具体取决于工作站。 (最值得注意的是,在我的笔记本电脑上它位于 D:)。编译替代检查(例如检查旧版本)的能力是保持一切相关的另一个强大动力。

这对于普通的 Delphi 项目相当有效(*),但我现在正在考虑对某些项目使用硬编码路径(或替代路径)。主要是因为开始使用ITE。

(*) Delphi(所有版本)似乎有时会在打开文件时更改工作目录,这反过来又会混淆相对路径(它们相对于工作目录,而不是 .dpr(oj) 显然)。如果我注意到这一点,我会在工作目录中打开一个文件(使用 file->Open),一切都很好。我还养成了在打开新项目之前关闭项目的习惯。

(**) 我有一组基本的设计时组件,可用于所有应用程序,但不使用包。我没有特定于应用的设计时组件。

【讨论】:

  • 其实最后我忘了ITE,用了dxgettext
【解决方案2】:

我所有的 Delphi 东西都在 C:\Delphi 下的子目录中

【讨论】:

    【解决方案3】:

    我的库是特定于项目的,存储在源库下的子目录中:

    /src/project1/libs/library1
                       library2
                  src/<source files of project1>
    /src/project2/libs/library1
                       library2
                  src/<source files of project2>
    

    这些库不会添加到 Delphi 库路径中,而是添加到项目的搜索路径中,因此我确信我为每个项目使用了正确的库版本。 (这当然只是为了维护项目的旧版本,当前项目会更新到最新的库版本)。

    这些库存储在 subversion 中,并以 svn:externals 的形式链接到项目。

    不幸的是,Delphi 不支持为每个项目加载包,所以我要么根据需要加载和卸载包,要么 - 我大部分时间都在做 - 只是在 ide 中使用相同的设计时包并依赖它们来仅更改版本之间略有差异,所以只要我在构建项目时使用正确的源代码就没有关系。

    【讨论】:

    【解决方案4】:

    在使用 Vista 及更高版本时,将库存储在程序文件中会导致许多问题。对于这些操作系统,最好在包含可执行文件的目录之外使用单独的目录。但是将 Delphi 保留在受保护的路径中,或者如果您将它安装在其他地方,请设置正确的 ACL。请记住,Windows 并不安全,因为大多数用户都这样做。 您还可以设置一个环境变量指向库路径,然后在 Delphi 库路径中将其与 $() 语法一起使用。例如,如果你使用 C:\dev\lib\delphi,你可以设置一个 DLIB 变量指向那里,然后在库路径中使用 $(DLIB)\JCL。 这也允许在库之间切换,只需在启动 Delphi 之前设置所需的环境变量。 如果库包和目录设计得当,就不需要为不同的 Delphi 版本保留不同的副本,它们会为每个版本创建子文件夹,但很多没有,可能需要单独的副本。

    【讨论】:

      【解决方案5】:

      如果我安装即用型库 - 我将它安装到 Program Files 下的 Delphi 文件夹中(确切的文件夹并不重要 - 它可以是 lib 或源)。

      这对我来说有很大的优势(尽管其他人认为它是劣势):在 Vista 和 Win7 上,UAC 不会让你弄乱已安装的库文件,就像它对 Delphi 本身一样。你有你的 pas 文件,你有你的 dcu、bpl 等文件——很好。只需使用它们。无需重新编译或更改。

      但是,如果我安装了我计划更改的库 - 我将其安装到 My Documents/RAD Studio 文件夹中,因此它没有写保护,我可以弄乱它。

      【讨论】:

      • 我喜欢将它们全部放在 c:\Packages 的子文件夹中(或左右)。
      【解决方案6】:

      我一直使用根目录下的文件夹,例如 d:\DelphiComponents,并在每个单独的子文件夹中组织版本控制(如果需要)。

      例如 d:\DelphiComponents\MMTools 有一个 Delphi6 和一个 Delphi7 文件夹。由于我在这些文件夹中确实有一些非常旧的库,因此我避免在文件夹名称中使用空格。

      【讨论】:

        【解决方案7】:

        出于安全原因,我认为在根目录中使用子文件夹(如 c:\src 或 c:\Delphi)并不是一个好主意。它看起来像是过去的问候,当时您并没有真正使用安全性或适当的文件夹结构。

        您想要可写文件夹?你有你的我的文件。甚至还有 RAD Studio 子文件夹。不喜欢 MyDocs?你有你的 AppData。

        您想要受保护的文件夹?有所有用户或程序文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-18
          • 1970-01-01
          • 2015-03-08
          • 2015-10-30
          • 1970-01-01
          • 2016-04-02
          • 2016-09-21
          • 1970-01-01
          相关资源
          最近更新 更多