喫茶XRAYトップページ

[スレッド全体
]

[12132] Re13:PDFの表示終了時のエラー返信 削除
2018/8/8 (水) 12:07:47 Mr.XRAY
> テストしたのは以下のサンプルです.
> IDE でコンパイルして実行.PDF 文書を表示するだけでフォームを閉じると
> EXE 終了時に例外が発生しました.
> PDF 文書を表示しなければ例外は発生しませんでした.


こういう質問だったらすぐ取り掛かったんですけどね (笑)
掲載しているサンプルコードを参考にしていろいろやっているということでしたので,
その「いろいろ」な部分が問題なのかな ? と思っていましたから.

過去の経験から,
「掲載しているサンプルではそういう現象は発生しませんでした」
とレスすると,
「他にコードを追加したり変更しています..」
となってしまうことが多いので.

まっ,言い訳ですけど (^^;
taka さんのテストがなければ放置だったかも知れません.
問題点をテストしてくださった taka さんに感謝です.


[12133] Re14:PDFの表示終了時のエラー返信 削除
2018/8/8 (水) 12:23:57 taka
▼ Mr.XRAYさん
> > テストしたのは以下のサンプルです.
> > IDE でコンパイルして実行.PDF 文書を表示するだけでフォームを閉じると
> > EXE 終了時に例外が発生しました.
> > PDF 文書を表示しなければ例外は発生しませんでした.
>
> こういう質問だったらすぐ取り掛かったんですけどね (笑)
> 掲載しているサンプルコードを参考にしていろいろやっているということでしたので,
> その「いろいろ」な部分が問題なのかな ? と思っていましたから.
>
> 過去の経験から,
> 「掲載しているサンプルではそういう現象は発生しませんでした」
> とレスすると,
> 「他にコードを追加したり変更しています..」
> となってしまうことが多いので.
>
> まっ,言い訳ですけど (^^;
> taka さんのテストがなければ放置だったかも知れません.
> 問題点をテストしてくださった taka さんに感謝です.

やっぱり参照カウンタの不具合でしたか。
Delphi2005でも再現しました。

修正コードみました。
Delphiのインポートツールのバグなんですね。

[12134] Re15:PDFの表示終了時のエラー返信 削除
2018/8/8 (水) 22:58:49 Mr.XRAY
▼ takaさん,どうもです.

taka さんの

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := True;
  if Assigned(AcroPDF1) then
  try
    FreeAndNil(AcroPDF1);
  except
    AcroPDF1 := nil;
  end;
end;

のコードがなかったら気が付かなかったでしょうね.
やはりプログラムというのはコードを書いて,それが実行されるわけですから,
具体的なコードがあるというのは強力です.
コードがなければ抽象的な話になってしまいますから.

> 修正コードみました。
> Delphiのインポートツールのバグなんですね。


ある意味ではやむを得ないということもあるかも知れません.
操作対象の COM オブジェクトはパーションによって機能が変わってきますから.
で,修正コードについて書いていませんでした.AcroPDFLib_TLB.pas にある

  TAcroPDF = class(TOleControl)
  private
    FIntf: IAcroAXDocShim;
    function  GetControlInterface: IAcroAXDocShim;

の FIntf が TAcroPDF のコンテナの実体ですので,destructor を override
して以下のように強制的に nil にしました.
この nil も AcroPDF1 := nil; がヒントです (^^;

destructor TAcroPDF.Destroy;
begin
  FIntf := nil;
  inherited;
end;


[12153] Re16:PDFの表示終了時のエラー返信 削除
2018/8/16 (木) 11:25:32 mountain079
▼ Mr.XRAYさん▼ takaさん

返信遅れて申し訳ございません。


色々と試していただき、誠にありがとうございます。

今回は急ぎの対応でしたので、tWebBrowserでしのぎましたが、
原因も追究していただけたようで、今後は再度AcroPDFでの作成を行っていきたいと思います。


私も皆様のお役に立てるよう、日々勉強に励みます。

本当にお世話になりました。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82