私は現在、TChromiumFMX を使用して Firemonkey で基本的な Web ブラウザーを作成しようとしています。私はもともとこのプロジェクトのためにグループに投稿しましたが、数週間経っても返事がありませんでした。
実行時に TChromiumFMX を作成しようとすると、問題が発生するようです。最初はアプリケーション内から作成しようとしました。アクセス違反エラーが発生したため、エクスポートされたプロシージャで DLL ルートを試しました。
エラーはそのままです。例外クラス: EAccessViolation 例外メッセージ: モジュール のアドレスでアクセス違反。アドレス 00000000 の読み取り。
最初のアドレスは、コード内で変更した内容にランダムに依存しているように見えます (修正を試みるために微調整を行いますが、すべて役に立ちません)。2 番目のアドレスは常に 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 バージョンでは発生しません (TCromiumFMX は TChromium に置き換えられます)。
誰かがこれに対する修正をまだ発見したかどうか興味がありますか? 私は何週間も検索して検索しましたが、まだ解決策を見つけていません。同様の問題について話している人さえ、Google Codeの問題ページにありました. 「アプリケーション内」バージョンのコードを使用して、所有者と親をオブジェクトに強制的に割り当てようとしましたが、そのような運はありませんでした。URLに移動するように指示すると、アクセス違反が発生します。
設計時に作成された最初のブラウザ ウィンドウが機能するためには、フォームが作成されるときに「Application.OnIdle」を「doOnIdleEvent」に、「FLoading」を「False」に呼び出す必要があることに気付きましたが、実行時に作成するときに同じことをするのはうまくいきませんでした。
考え?
編集:伝えるべきではないタイプミスを修正しました