如何释放资源
我在Delphi 中打开 pdf 文件
但是 连续点击两次就会出错,(其核心控件是pdf1 我是装了pdf.ocx ,之后就有个pdf1控件在控件栏上面的 )
当运行时我点击一次Button1 时就会正常显示对应的pdf文件 ,但是当再次点击Button1时系统就会报告错误
或者是当我点击一次Button1 时就会正常显示对应的pdf文件 ,然后在点 Button2 (其代码跟Button1 中的一样 只是将其中的 123 更改为 234 ) 系统就会报告错误
错误报告如下:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00e8F134 in module 'Project1.exe'.Read of address 0000002220' Process stopped Use or Run to continue 
  
请问我要如何做才可以点多次Button1或者在其他按纽也可以调用Pdf1 谢谢 
 部分代码如下:procedure TForm1.Button1Click(Sender: TObject);
var
fpdf:String;
begin
fpdf:='c:\aa.pdf';
ADOQuery1.SQL.Clear;
adoquery1.sql.text:='select * from pdf where billsn='+''''+'123'+''''+'';
adoquery1.open;
TBlobField(adoquery1.fieldbyname('pdf')).savetofile('c:\aa.pdf');
Pdf1.src:=fpdf;
end
我要如何做 谢谢

解决方案 »

  1.   

    在 Button2 的 代码中试试先把ADOQuery1关闭,然后再进行查询
      

  2.   

    跟数据库没有关系 最简单可以这样
    fpdf:='c:\aa.pdf'; 
    Pdf1.src:=fpdf;  //打开pdf文件
    就可以打开对应的pdf文件, 可是不能点两次 或者不能在其他地方进行
    Pdf1.src:=fpdf;  这样打开文件
      

  3.   

    否则就会报告错误
    Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00e8F134 in module 'Project1.exe'.Read of address 0000002220' Process stopped Use or Run to continue  
     
      

  4.   

    我希望上好象在
    procedure TForm1.Button1Click(Sender: TObject); 
    begin
    edit1.txt:='你好'
    end ;
    这样 Button1 可以点多次 或者在 Button2Click 中也可以
    edit1.txt:='真好';
    系统不会出错误
      

  5.   

    用试过,Pdf控件在那里??我也装来玩玩...
      

  6.   

    安装了 Adobe Acrobat6.0 Professional 就会有这个东西啊
      

  7.   

    试了一下,重新载入一个pdf文件,不会报错,但是cup消耗很厉害。
    发现结束进程ArcoRd32.exe后就不会打不开。所以在加载一个pdf文件之前,结束可能存在的ArcoRd32.exe就不会有问题,不知道楼主的具体情况是什么样的。
    测试环境:
    Win2003 Server
    Delphi7.0
      

  8.   

    lynmison
     您好,有在吗? 你是如何打开的.我的代码如下,当我运行程序时 执行了点了 Button1 可以正常打开文件 可是在点 Button2 时(或者在点Button1 时)就报告错误了,请告诉你 是怎么做以达到效果的.谢谢 
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    fpdf:WideString; 
    Pdf2: TPdf; 
    begin 
    fpdf:='c:\aa.pdf'; 
    ADOQuery1.SQL.Clear; 
    adoquery1.sql.text:='select * from pdf where billsn='+''''+'123'+''''+''; 
    adoquery1.open; 
    TBlobField(adoquery1.fieldbyname('pdf')).savetofile('c:\aa.pdf'); 
    Pdf1.src:=fpdf; 
    end; procedure TForm1.Button2Click(Sender: TObject); 
    var 
    fpdf:String; begin 
    fpdf:='c:\bb.pdf'; 
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear; 
    adoquery1.sql.text:='select * from pdf where billsn='+''''+'345'+''''+''; 
    adoquery1.open; 
    TBlobField(adoquery1.fieldbyname('pdf')).savetofile('c:\bb.pdf'); 
    Pdf1.src:=fpdf; end;   
      

  9.   

    你先确定报错的代码行,再确定是什么原因.我觉得应该是OCX报的错.你可以查查Pdf1.Src是否可以重复赋值?这个我觉得是问题的关键.
    Pdf1.src:=fpdf;  
      

  10.   

    没用过那个OCX,应该是这原因。
    DELPHI告诉你要访问的资源不存在导致异常,把数据库部分去掉先用熟那个OCX吧。
    几天都解决不了?!