Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
如何在Delphi2007中安装类或单元,如组件?_Delphi_Delphi 2007 - Fatal编程技术网

如何在Delphi2007中安装类或单元,如组件?

如何在Delphi2007中安装类或单元,如组件?,delphi,delphi-2007,Delphi,Delphi 2007,我正在用Delphi2007编写一个包,其中包含一个组件和几个类。我想“安装”类和组件 更准确地说:当安装组件时,单元会以某种方式注册,这样就不需要将其路径添加到项目中的搜索路径中。我还想用几个不包含组件的额外单元来实现这一点:如果我能以某种方式注册包的根,我就完成了。这可能吗 编辑:一句话的目标是: 如果有人安装了我的软件包,则无需将软件包中单元的路径添加到Delphi的库路径中(因此这不必手动完成)。将其添加到dcluser.dpk中,并对您进行编译就足够了吗?当我创建一个简单的组件软件包时

我正在用Delphi2007编写一个包,其中包含一个组件和几个类。我想“安装”类和组件

更准确地说:当安装组件时,单元会以某种方式注册,这样就不需要将其路径添加到项目中的搜索路径中。我还想用几个不包含组件的额外单元来实现这一点:如果我能以某种方式注册包的根,我就完成了。这可能吗

编辑:一句话的目标是:
如果有人安装了我的软件包,则无需将软件包中单元的路径添加到Delphi的库路径中(因此这不必手动完成)。

将其添加到
dcluser.dpk
中,并对您进行编译就足够了吗?

当我创建一个简单的组件软件包时,我通常会设置将“单元输出目录”包选项添加到$(BDSCOMMONDIR)\Dcp,而不是将路径添加到库路径-它更简单。您可以下载my作为示例-它是带有详细安装说明的纯源代码包

更准确地说:当一个组件 安装后,该装置不知何故 注册的,注册的 需要将其路径添加到 在项目中搜索路径

该单元未在任何地方注册。当安装组件时,它所在的bpl包将在IDE启动时添加到已知包列表中,它将调用所有注册过程(注意大写字母R)这些注册过程包含在工具选项板上注册组件的代码

如果您正确地设置了组件包,那么当您将组件放到窗体上时,IDE还将知道要向窗体的uses子句添加哪些单元


环境选项中的库路径不是所有这些的一部分。如果通过安装组件对其进行修改,则除了将组件的bpl添加到IDE之外,组件的安装程序还将作为一个单独的操作来执行该操作。

IDE还需要知道与包关联的任何DCU的存储位置。这意味着必须将实际路径(DCU所在的位置)添加到IDE的“库路径”中,或者将它们存储在已注册为库路径的位置。

我真的不知道(以前从未使用过dcluser.dpk)。编辑了问题以使问题更清楚。我不喜欢组件库未经询问就弄乱我的库路径。事实上,我的环境选项库路径是空的。甚至连标准bds库路径都没有。@Marjan Venema:说得好。我会记住这一点!感谢您的详细描述:我的观点IDelphi不知何故知道如何找到源代码(您可以通过IDE中的uses子句访问),这正是我试图实现的。更新库路径当然是一个单独的操作(我不知道如何做),但它确实实现了我想要的。@Martijn:当您在uses中按住ctrl键单击一个单元时(或右键单击并选择)在光标处打开文件“)由于库路径或“浏览”路径中的内容,Delphi知道在哪里可以找到源代码。Delphi没有其他方法知道单元在哪里。事实上,当您清空这两个路径时,Delphi将找不到任何组件的任何源代码。