有一个旧项目我需要重新编译到XE5,试图避免原始D7组件带来的奇怪的Twebbrowser错误 . 下面的代码在D7上很有用,但在XE5上却没有 .
function GetFrame(FrameNo: Integer; WB: TWEbbrowser): IWebbrowser2;
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
unk: IUnknown;
Fetched: PLongint;
begin
while WB.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
if Assigned(WB.document) then
begin
Fetched := nil;
OleContainer := WB.Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
Enum.Skip(FrameNo);
Enum.Next(1, Unk, Fetched);
Result := Unk as IWebbrowser2;
end
else
Result := nil;
end;
我已经检查过,两个版本的EnumObjects参数相同,但XE5表示“E2033 . 实际和正式var参数的类型必须相同” . 知道如何重新编译这只小狗吗?谢谢 . 和平!
1 回答
对于变量参数,实际参数必须是形式参数的确切类型 .
如果你得到错误我可以假设你的枚举变量的类型不是类型:
ActiveX.IEnumUnknown
,所以你可以尝试在变量声明部分中更改这一行:至 :