在安装用户定义的组件时,什么会导致 DCLUSR.$$$ 访问被拒绝错误

问题描述

我找到了组件 TColorbutton 并尝试在 Delphi 10.4.2 中安装它。我知道它目前嵌入在 FMX 中,但我希望它在 VCL 中可用。但是,安装失败:

无法保存项目“c:\program files (x86)\embarcadero\studio\21.0\lib\win32\release\dclusr.dproj”。保存时出现以下错误:无法创建文件“c:\program files (x86)\embarcadero\studio\21.0\lib\win32\release\dclusr.$$$”

我该怎么做才能安装它?或者,有没有办法在 VCL 中使用 FMX 版本?

解决方法

安装失败,因为您尝试安装组件,而其单元位于 C:\Program Files (x86) 文件夹下。由于该文件夹是受保护的系统文件夹之一,Windows 会阻止 Delphi 在编译期间创建必要的文件。

在尝试安装之前,您应该将组件文件移动到不受保护的文件夹,例如 C:\Users\<YourUsername>\Documents\Embarcadero。这样Delphi在编译需要的组件包时就不会被Windows拦截了。

,

您似乎正在尝试从 FMX 库中“提取”一个组件并将其“移到”VCL 库中。不要那样做!!!如果您认为它可以正常工作,那么您可能已经完成了安装。

您没有说明将其安装到哪个库中,但是您应该始终将自己的组件安装到您自己的组件库中。我使用一种我称之为“附加组件”的方法。有些人使用他们的名字。如果您尝试将其安装到系统库之一中,您将发现无法安装 Delphi 更新以及依赖于这些组件的任何库。永远不要更新 DELPHI 组件库!!! (是的,你可以,但不要!)

VCL 和 FMX 使用完全不同的方法来写入屏幕(除其他外),这就是它们是独立库的原因。 FMX 在组件和平台的“屏幕”(我相信是 OpenGL)之间有一个层,而 VCL 则直接调用 Windows API。

如果您希望在 VCL 中看到 FMX 中的某些内容,那么请寻找可以执行您想要的操作的特定于 VCL 的组件。或者从现有的基础上构建您自己的。

在 Google 上搜索 TColorButton,您会找到一些可以使用的参考资料。托里有一些。

在较新的 about.com 站点 (ThoughtCo.com) 上有一篇关于它的文章,但我在那里找不到源代码的链接。

Google 是您的朋友。试试这个:

https://www.swissdelphicenter.ch/en/showcode.php?id=1100