有一箇舊項目需要重新編譯爲XE5,以避免原始D7組件帶來的奇怪的Twebbrowser錯誤。下面的代碼在D7上運行良好,但在XE5上運行得不錯。錯誤從Delphi 7重新編譯爲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,實際和正式參必須是相同的」。 任何想法如何我可以重新編譯這隻小狗?謝謝。和平!
當你有編譯器錯誤時,告訴我們哪一行生成它。另請嘗試閱讀編譯器錯誤的文檔。 E2033被記錄。 – 2014-09-21 17:24:46
該行是OleContainer.EnumObjects(OLECONTF_EMBEDDINGS,Enum); – 2014-09-21 18:21:25