如何诊断;无法访问程序包信息“;delphiide中的错误
我正在开发一组相互继承的基于TFrame的组件(许多在此过程中给予我巨大帮助的人已经知道!),并且遇到了另一个与包和安装相关的小“障碍” 我基本上有以下层次结构:如何诊断;无法访问程序包信息“;delphiide中的错误,delphi,ide,packages,custom-component,Delphi,Ide,Packages,Custom Component,我正在开发一组相互继承的基于TFrame的组件(许多在此过程中给予我巨大帮助的人已经知道!),并且遇到了另一个与包和安装相关的小“障碍” 我基本上有以下层次结构: TFrame TBaseFRame TBaseSizeableFrame TViewerType1 TViewerType2 …和一个面板,TExtRzPanel,它继承了Raize面板,并向其添加了一些大小调整/移动功能,以及一些其他属性/功能TBaseSizeableFrame使用此组件,并将其大部分功能传递到框架本
TFrame
TBaseFRame
TBaseSizeableFrame
TViewerType1
TViewerType2
…和一个面板,TExtRzPanel,它继承了Raize面板,并向其添加了一些大小调整/移动功能,以及一些其他属性/功能TBaseSizeableFrame使用此组件,并将其大部分功能传递到框架本身,因此我可以直观地开发复合查看器组件。总的来说,它工作得很好
TFrame子体都已注册到选项板(请参见
对于我之前问过的相关问题)。目前,我的软件包设置如下:
- MyPanels-包含TExtRzPanel
- 基本帧-包含TBaseFrame和TBaseSizeableFrame
- ViewerSet1-包含一个基于查看器框架的组件和一个非可视组件,该组件将该查看器作为对话框形式调用。(我计划在这个节目包中也有一些其他的观众)李>
- 无法安装程序包C:\Documents and Settings\All Users\Documents\RAD Studio\5.0\Bpl\MyPanels.Bpl,因为它是使用不同版本的Delphi或CBuilder创建的。 是否要在下次加载项目时尝试加载此包?(注意:我只使用一个版本的Delphi—Delphi 2007构建了此包)
- 有一次,我注意到MyPanels的包描述没有“接受”(即,它显示为文件名为Tools->component->Install Packages),这让我觉得IDE正在查找/使用的文件可能有两个版本,但我没有看到/发现这种情况
- Delphi在启动时发出警告,指示它无法加载已安装的软件包,以及是否希望下次加载,等等
- 无法访问程序包“MyPanels.bpl”的程序包信息(起泡、冲洗、重复)
稍后更新: 在把这个放在一边一段时间后,我试着删除所有DCP/DCU MyPanels文件,然后一步一步地安装这三个包。(VMWare在这里是值得的——每次成功后都会有快照,这样在出现问题时就不必从头开始)。事实证明,如果我从ViewerSet1包中删除了对话框表单,它会安装OK。如果我再添加一次表单(它的DFM没有显示出来,就像我遇到的那样),它似乎安装正常。我已经安装了所有的组件,但看起来都不正常(并且在我的虚拟机中快照了整个过程!),但我仍然不确定出了什么问题,也不知道为什么。添加该表单最初会做什么,从而导致此类错误?有什么想法吗
我认为,从长远来看,即使更好地解释/理解什么样的事情会导致“无法访问包信息”错误也会有所帮助。好的,我肯定遗漏了一些东西。从SysUtils:
function PackageInfoTable(Module: HMODULE): PPackageInfoHeader;
var
ResInfo: HRSRC;
Data: THandle;
begin
Result := nil;
ResInfo := FindResource(Module, 'PACKAGEINFO', RT_RCDATA);
if ResInfo <> 0 then
begin
Data := LoadResource(Module, ResInfo);
if Data <> 0 then
try
Result := LockResource(Data);
UnlockResource(Data);
finally
FreeResource(Data);
end;
end;
end;
在mypackage.txt文件中应该有一个名为PACKAGEINFO的资源
或者,您可以从live.sysinternals.com下载filemon.exe,设置bds过滤器并监视IDE实际试图加载的内容。很可能是您的软件包正在加载的另一个软件包,而这第二个软件包没有附加PACKAGEINFO。不必为提出任何问题而道歉——我感谢您在这里提供的意见/想法,并将尝试这些意见。想知道您的“这是否具有仅具有bpl扩展的库的所有特征”可能与上面更新的信息有关:添加对话框表单…?好的,如果删除对话框允许安装软件包,那么问题显然不是软件包定义不正确。我仍然很想知道TDUMP向您展示了什么——在坏版本的包和不包含对话框的工作版本上。如果这是某种类型的Delphi问题,那么也许您可以尝试通过将对话框移动到它自己的单独运行时包中来解决它?TDUMP(顺便说一句,我以前没有使用过)看起来与我创建的其他(工作)BPL基本相同。这是一个相当大的文本文件。我特别想要什么?
C:\Program Files\CodeGear\RAD Studio\5.0\bin\tdump.exe mypackage.bpl>mypackage.txt