我每次从数据库中把Word文档从image字段下到客户端,然后用Word打开。都很正确,可是如果我要是手动把word关掉,再次执行代码就会出现“无法创建终结点"错误.
源代码如下:WA1即WordApplication------------------------------------------------------------
procedure Twin_School_PrepareLesson_Edit.Btn_ViewDocClick(Sender: TObject);
var
        l_filename: olevariant;
        l_save:    olevariant;        l_Adods:TAdodataSet;
        l_Title:widestring;
begin
    inherited;
    l_save:=false;
    try
      WA1.Connect;
    except
      MessageDlg('您的计算机没有安装Word,如果要运行本系统必须安装Word2000或更高版本', mtError, [mbOk], 0);
      exit;
    end;
    l_Adods:=dm_main.AdoDS_public;    if WA1.Documents.Count>0 then    ////////再次打开时错误出现在这里
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~```
        WA1.ActiveDocument.Close(l_save,EmptyParam,EmptyParam);    l_Adods.Active:=false;
    l_Adods.CommandText:='Select * from School_PrepareLesson where ID='''+Adods_PrepareLesson['ID']+'''';
    l_Adods.Active:=true;
    if(l_Adods.RecordCount<1) then
    begin
        ShowMessage('调试:没有Word记录!');
    end;
    (l_Adods.Fieldbyname('正文') as TBLOBField).SaveToFile(ExtractFilePath(ParamStr(0))+'ViewDoc.doc');
    l_Title:=Adods_PrepareLesson['标题']+'-----作者:'+Adods_PrepareLesson['姓名'];
    l_Adods.Active:=false;
    l_fileName:=ExtractFilePath(ParamStr(0))+'ViewDoc.doc';(filename,confirmconversions,Readonly,addtorecentfiles,passworddocument, passwordtemplate,revert, writepassworddocument, writepasswordtemplate, format,,);
    Wa1.Documents.Open(l_FileName, EmptyParam, EmptyParam, EmptyParam,
                                EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                                EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    wa1.Caption:=l_Title;
    wa1.Visible:=true;
end;-------------------------------------谢谢

解决方案 »

  1.   

    WordApplication的onquit中加入procedure Tfrmshuru.WordApplicationQuit(Sender: TObject);
    var
      SaveChanges,
      OriginalFormat,
      RouteDocument: OleVariant;
    begin
      SaveChanges := WdDoNotSaveChanges;
      OriginalFormat := UnAssigned;
      RouteDocument := UnAssigned;
      try
        //WordApplication.Saved:=true;
        WordApplication.Quit(SaveChanges, OriginalFormat, RouteDocument);
        WordApplication.Disconnect;
      except
        on E: Exception do
        begin
          Showmessage(E.Message);
          WordApplication.Disconnect;
        end;
      end;
    end;
      

  2.   

    关闭Word后,需要将其释放!!