THTML文件GDIPL2A.pas出现问题

时间:2009-08-14 20:08:26

标签: delphi

运行项目并收到错误说明                                          “实际参数不够” 错误发生在“C:\ Program Files \ PBear \ HTMLComponents \ package \ GDIPL2A.pas”中。 错误指出三次“继承创造”;第260,270和278行。在“GDIPL2A.pas”文件中。代码是: -

var
  err: integer;
begin
inherited Create;
err := GdipCreateBitmapFromScan0(W, H, 0, PixelFormat32bppARGB, nil, fHandle);
if err <> 0 then
  raise EGDIPlus.Create('Can''t create bitmap');
end;

我想知道为什么它会在“THTML”文件中显示错误,这些文件不是THTML的安装文件。我甚至没有触及THTML文件。

请帮助

谢谢和问候

沃什

3 个答案:

答案 0 :(得分:1)

“继承创建”中的“实际参数不足”错误意味着您正在尝试调用继承的构造函数,但它不提供任何参数。检查您继承的类,您将看到需要一些参数的Create。 (如果基类没有,请检查它的父级,它的父级等等。你最终会找到一个。)一旦你找到构造函数声明你应该很明显需要传递给它。

你的电话需要看起来像:

inherited Create(param1, param2);

答案 1 :(得分:1)

我有THTML,它确实包含GDIPL2A.pas,它是GDIPlus的包装器;显然THTML使用GDIPlus来显示嵌入的图像或其他东西。

快速查看TGPImage和TGpBitmap的声明,显示每个声明的构造函数声明:


// TGpImage
public
  constructor Create(FileName: string; TmpFile: boolean = False); overload;
  constructor Create(IStr: IStream); overload;

// TGpBitmap
public
  constructor Create(W, H: Integer); overload;
  constructor Create(IStr: IStream); overload;

您将看到所有构造函数至少需要一个或两个参数;你对继承Create的调用没有通过。但是,由于对继承的调用是在另一个构造函数中,它应该可以工作(实际上在我的机器上;我只是尝试从THTML重建其中一个演示并重新编译GDIPL2A.pas),你还有其他的东西,就像编译器使用的路径中的GDIPL2A的不同版本而不是您在IDE编辑器中看到的版本。

关于你的问题,我在上面第一段回答了这个问题。它报告了THTML中的错误,因为它是编译器正在使用的GDIPL2A的副本,可能不是您的代码期望它使用的副本。

你可以通过以下方式解决这个问题:

  1. 重新排序代码的uses子句中的单位,以便导致GDIPL2A编译的所有调用使用相同的单词;

  2. 将代码认为正在使用的GDIPL2A复制到项目的源文件夹中,以便从那里编译。如果你在同一个项目中使用它,这可能会破坏THTML,所以要做好准备;

  3. 查找并解决GDIPL2A的竞争副本,以便编译器的搜索路径上只有一个副本可用;

  4. 如果您未在问题项目中使用THTML路径,请从项目的搜索和库路径中删除THTML路径。您还可以使用Project | Options | Packages来阻止THTML在您打开项目时加载,以便加快项目加载。

答案 2 :(得分:0)

我不知道是否有人读过这个,但我的问题是在安装ThtmlViewer期间发生的。我的解决方案是编辑GDIPL2A.pas文件。我刚刚添加了一个emty字符串和一个false布尔值,所以3个create语句看起来像这样:

   inherited Create('', False);

然后一切正常(至少到目前为止)

(旧PC上的旧版Windows Xp上有旧的Delphi 4,未连接到互联网)

二苓