Delphi THTML文件GDIPL2A.pas出现问题
正在运行一个项目,但遇到一个错误,错误是Delphi THTML文件GDIPL2A.pas出现问题,delphi,Delphi,正在运行一个项目,但遇到一个错误,错误是 “实际参数不足” 错误出现在“C:\Program Files\PBear\HTMLComponents\package\GDIPL2A.pas”中。 错误三次指向“继承的创建”;第260270行和第278行。在文件“GDIPL2A.pas”中。代码为:- var err: integer; begin inherited Create; err := GdipCreateBitmapFromScan0(W, H, 0, PixelFormat32b
“实际参数不足” 错误出现在“C:\Program Files\PBear\HTMLComponents\package\GDIPL2A.pas”中。 错误三次指向“继承的创建”;第260270行和第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;
var
err:整数;
开始
继承创造;
err:=GdipCreateBitmapFromScan0(W,H,0,像素格式32bppargb,nil,fHandle);
如果错误为0,则
升起EGDIPlus.Create('无法创建位图');
结束;
我想知道为什么它会在“THTML”文件中显示一个错误,这些文件都是安装THTML的文件。我甚至没有碰THTML文件
好心帮忙
谢谢和问候
Vas在“继承的创建”上出现“实际参数不足”错误;表示您试图调用继承的构造函数,但它不提供任何参数。检查要从中继承的类,您将看到需要一些参数的Create。(如果基类没有,请检查它的父类,以及它的父类,依此类推。最终您会找到一个。)一旦找到了需要传递给它的构造函数声明,这一点应该非常明显
您的通话需要如下所示:
inherited Create(param1, param2);
我有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的调用没有通过。然而,由于对inherited的调用在另一个构造函数中,它应该可以工作(在我的机器上确实可以工作;我刚刚尝试从THTML中重建了一个演示,它重新编译了GDIPL2A.pas,很好),您还需要做一些其他事情,就像编译器正在使用的路径中的GDIPL2A的不同版本,而不是您在IDE编辑器中看到的版本
关于你的问题,我在上面第一段回答了。它在THTML中报告错误,因为编译器使用的是GDIPL2A的副本,而您的代码可能不希望它使用该副本
您可以通过以下任一方式解决此问题:
我不知道是否有人读过这篇文章,但我的问题发生在安装ThtmlViewer的过程中。我的解决方案是编辑GDIPL2A.pas文件。我刚刚添加了一个emty字符串和一个假布尔值,因此3个create语句如下所示:
inherited Create('', False);
然后一切都很顺利(至少到目前为止)
(我有一台旧电脑上的旧Windows Xp上的旧Delphi 4,未连接到internet)
亲切的
二陵您使用的是哪个版本的Delphi?具有继承的Create继承的类是从哪个类继承的?(在接口部分的某处查找TSomeClass=class(…)。从我在这里读到的内容来看,这听起来像是版本冲突,单元基于不需要参数的基类的另一个版本!我使用的是Delphi版本4,在THTML文件中提到了{version 9.41}。我在THTML和我的项目文件夹中都没有找到TSomeClass=class()。谢谢你的回复-Vasdelphi4是11年前发布的!我想知道Delphi 2009是否会在2020年继续使用。Delphi 7是7年前发布的,现在仍然很流行。对我来说,这是最后一个“轻量级”的DelphiIDE,后来我尝试了2005年(大量bug)和2009年,这两个版本都很重。如果有个人版的话,我会转到D2009…1)使用GDIPL2A的(THTML)文件是MetaFilePrinter.pas、htmlview.pas、HTMLUn2.pas、HTMLSubs.pas。如何“导致GDIPL2A编译的调用使用的是同一个”?因为它只是将名称“GDIPL2A”放在“call”中。2) Sved GDIPL2A.pas在项目文件夹中并编译了它。仍然得到相同的错误。3) 我在C驱动器中还有2个THTML文件夹。所以我删除了它们,以免影响映射/代码。仍然是相同的错误。4) 我选中了“Project | Options | Packages”…“THTML”根本没有添加到它。我应该在Delphi4 IDE/Tools/Environmental/Library中添加itHello Ken吗以下是按降序排列的映射:-1 C:\Program Files\PBear\HTML Components\THTML\Package 2$(DELPHI)\Lib 3$(DELPHI)\Bin 4$(DELPHI)\Imports我想知道“Lib、bin、imports“是需要的。如果不需要,可以移除吗?如果不需要,可以移除,但不应该是问题所在。有些东西发现了不止一个GDIPL2A副本,而这些副本并不相同。请参阅上面的步骤3-使用Windows资源管理器并搜索GDIPL2A.*。除去THTML文件夹中的文件以外的所有匹配文件(将它们重命名为完全不同的文件,例如,像different_GDIPL2A.pas)。然后试着编译你的项目。vas,你要么没有彻底检查,要么你真的搞砸了。我不知道还能告诉你什么;在少数(非常罕见)的情况下,我遇到了相同的问题,或者知道其他人遇到了相同的问题,上述步骤总是能够发现并修复问题。嗨!梅森,我会怎么做