我在Delphi 7中遇到一个特定问题,我正在尝试运行一个由外部方创建的自定义应用程序,所以从某种意义上说,我是一个试图修复bug的自由lancer等等。
问题:不满意的前向或外部声明
这与TMS Component Pack v5有关,我遇到问题的文件是PictureContainer.pas
。
这是我得到的错误:
[错误] PictureContainer.pas(135):不满意的前瞻性或外部声明:' THTMLPicture.GetStretched'
[错误] PictureContainer.pas(136):不满意的前向或外部声明:' THTMLPicture.SetStretched'
[错误] PictureContainer.pas(188):不满意的前向或外部声明:' THTMLPictureCache.Destroy'
[致命错误] HTMLStatusBar.pas(29):无法编译使用过的单位' PictureContainer.pas'
我一直在努力为此寻找解决方案,而且有很多这样的解决方案,但是在这一点上,由于我对这种类型的错误了解不多,所以我很容易失去这种解决方案。
请,任何帮助将不胜感激
谢谢
以下是PictureContainer.pas源代码的相关说明:
unit PictureContainer;
{$I TMSDEFS.INC}
interface
//CUT
type
//NOTE: THTMLPicture is not defined in this unit, but we do have includes...
{$I WIIF.PAS}
//CUT
implementation
//CUT
{$I WIIMPL.PAS}
//CUT
{ TPictureCollection } Error line 135 <-------------
Error line 136 <-------------
function TPictureCollection.Add: TPictureItem;
//CUT
constructor TPictureContainer.Create(AOwner: TComponent); Error line 188 <-------------
begin
//CUT
答案 0 :(得分:4)
当编译器说“不满意的前向或外部声明”时,它意味着代码中的某个地方是函数的声明,但它无法找到该函数的定义。功能需要定义。
在您的情况下,缺少的实现适用于THTMLPicture
和THTMLPictureCache
之一的两种方法。它们显然不存在于您目前提供的代码中,因此编译器抱怨是正确的。
这种错误有几种可能的解决方案:
$IFDEF
表达式已经过时,它们被某种方式排除在外。或许编译器找不到一些意图通过$INCLUDE
指令合并的文件。