🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
2 messages
2 total messages Started by Sivy Tue, 31 May 2016 12:07
Delphi 2007 + AdobeReader DC ActiveX i AV przy zwalnianiu obiektu
#344958
Author: Sivy
Date: Tue, 31 May 2016 12:07
98 lines
3168 bytes
Witam

Mam problem z osadzonym AdobeReaderem (activeX) po przejściu na 
najnowszą wersję (DC). Przy zwalnianiu obiektu wyrzuca AV. Jak na 
komputerze jest zainstalowana poprzednia wersja Readera (11) to jest 
wszystko w porządku.

Napisałem już nawet minimalny programik do testów i przy .Free otrzymuję AV.

Zauważyłem jedno, jeżeli nie załaduję pliku PDF do kontrolki to mogę 
zwolnić obiekt bez żadnych problemów, ale jak był załadowany jakikolwiek 
to wtedy otrzymuję AV.

Niby aby zamknąć otwarty dokument wystarczy do property SRC przypisać 
pusty string, ale u mnie jak przypiszę '' to i tak jest dalej przypisany 
wczytany dokument i nic się nie dzieje.

AcroPDFLib_TLB wygenerowany z ostatniej wersji Adobe Readera DC wersja 
2015.016.20041

Poniżej wklejam kod minimalnego programu do testów.

1. bt_createClick()
2. bt_openClick()
3. bt_killClick() -> AV

Jak zamknąć otwarty dokument w tej kontrolce ? może to by załatwiło 
sprawę ....

<code>

unit main;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
   Dialogs, OleCtrls, AcroPDFLib_TLB, StdCtrls, ExtCtrls;

type
   TForm11 = class(TForm)
     Panel1: TPanel;
     bt_open: TButton;
     OpenDialog1: TOpenDialog;
     bt_kill: TButton;
     bt_create: TButton;
     bt_open_nil: TButton;
     procedure bt_openClick(Sender: TObject);
     procedure bt_killClick(Sender: TObject);
     procedure bt_createClick(Sender: TObject);
     procedure bt_open_nilClick(Sender: TObject);
   private
     { Private declarations }
   public
     AcroPDF1: TAcroPDF;
     { Public declarations }
   end;

var
   Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.bt_openClick(Sender: TObject);
begin
   with OpenDialog1 do
   begin
     Execute();
     AcroPDF1.LoadFile(OpenDialog1.FileName);
   end;
end;

procedure TForm11.bt_killClick(Sender: TObject);
begin
   if AcroPDF1 <> nil then
     AcroPDF1.Free;
end;

procedure TForm11.bt_createClick(Sender: TObject);
begin
   AcroPDF1 := TAcroPDF.Create(nil);
   AcroPDF1.Parent := Form11;
   AcroPDF1.Align := alClient;
end;

procedure TForm11.bt_open_nilClick(Sender: TObject);
begin
   AcroPDF1.src := '';
end;

end.

</code>

Pozdrawiam
Re: Delphi 2007 + AdobeReader DC ActiveX i AV przy zwalnianiu obiektu
#344980
Author: m
Date: Tue, 31 May 2016 16:16
16 lines
1481 bytes
> Niby aby zamknąć otwarty dokument wystarczy do property SRC przypisać
> pusty string, ale u mnie jak przypiszę '' to i tak jest dalej przypisany
> wczytany dokument i nic się nie dzieje.
>
Eksperymentalnie sprawdziłem twój kod i też mam AV przy zamykaniu

Zobacz krok po kroku co sie dzieje jak przypisujesz "SRC := ''"
U mnie tam jest pusta metoda.
A dla starej wersji to działało ? Jak to wygladało kiedyś ?

Przykłady z Adobe Acrobat SDK nie mają AV przy zamykaniu ale tylko raz 
udało mi się wczytać PDF-a
może o ActiveX już warto zapomnieć ?

M
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads