我目前正在尝试使用TChromiumFMX在Firemonkey中创建基本Web浏览器。我最初是为该项目发布的,但在几周内没有得到答复。
尝试在运行时创建TChromiumFMX时似乎存在问题。我最初尝试在我的应用程序中创建它。由于这会引发访问冲突错误,然后我尝试使用导出过程的DLL路由。
错误是这样的; 异常类:EAccessViolation 异常消息:模块中的地址访问冲突。读取地址00000000。
第一个地址似乎是随机的,取决于我在代码中的变化(尝试修复它的轻微调整,一切都无济于事),而第二个地址总是00000000。例如;在“ChromDLL.dll”中的地址0117B40A处访问冲突。读取地址00000000。
代码如下;
[Global Variables]
Chrom : TChromiumFMX;
[...]
Procedure Chrom_Create(AlignTo : TAlignLayout; ParentIn :
TFmxObject; DefaultURLIn : String); export;
begin
Chrom := TChromiumFMX.Create(nil);
Chrom.Parent := ParentIn;
Chrom.Align := AlignTo;
Chrom.Options.CaretBrowsingEnabled := True;
Chrom.Options.ThreadedCompositingEnabled := True;
Chrom.Options.EncodingDetectorEnabled := True;
Chrom.Options.FullscreenEnabled := True;
Chrom.Options.FileAccessFromFileUrlsAllowed := True;
Chrom.DefaultUrl := DefaultUrlIn;
end;
这是来自DLL版本,但我在应用程序版本中编写的代码非常相似,并且也因类似的访问冲突而失败。
此问题仅发生在FMX / Firemonkey组件上,而VCL版本不会出现类似代码(TChromiumFMX替换为TChromium)。
我很好奇是否有人发现了这方面的修复程序?我已经搜索并搜索了几周,并且还没有找到解决方案,而且很少有人甚至在Google Code的问题页面上讨论类似的问题。我尝试使用代码的“应用程序内”版本强行将其所有者和父级分配给对象但是再次没有这样的运气。当我告诉它导航到URL时发生访问冲突。
我注意到,在创建表单时,我必须将“Application.OnIdle”调用为“doOnIdleEvent”并将“FLoading”调用为“False”,以便在设计时创建的初始浏览器窗口能够运行,但是当我在运行时创建一个时,我没有运气。
思想?
编辑:修正了一个不应该传播的拼写错误