Ole与word的问题,愿意出高分。(200分)

  • 主题发起人 主题发起人 niaoqiu
  • 开始时间 开始时间
N

niaoqiu

Unregistered / Unconfirmed
GUEST, unregistred user!
OLE打开word文档时常常会导致系统没响应,或者常常出现“服务器关闭”等提示,不知道是什么原因?
具体的源代码如下:

//删除现存文件
DeleteFile('c:/temp.doc');
DeleteFile('c:/temp.tmp');

MyFile:=TFileStream.Create('c:/temp.tmp',fmCreate);

with query do
begin
Stream:= TBlobStream.Create(FieldByName(fieldName) as TBlobField, bmRead);
MemSize:= Stream.Size;
Inc(MemSize); {Make room for the buffer's null terminator.}
Buffer:=AllocMem(MemSize); {Allocate the memory.}
try
Stream.Read(Buffer^,MemSize);
MyFile.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
end;
if FileExists('c:/temp.tmp') then
begin
if not RenameFile('c:/temp.tmp', 'c:/temp.doc') then
begin
userError('发生错误,无法打开文件!');
exit;
end;
ole.CreateObjectFromFile('c:/temp.doc',False);
ole.Run;
ole.DoVerb(1);
end;
 
请把ole.CreateObjectFromFile的第二个参数设为true试一下,另外ole.Run不需要。
 
Ole与word的问题
我也试过,
虽然功能能实现,
但运行极不稳定
 
这个没有办法。找下好点的计算机,Word启动、运行快一点。出错的机会少一些。
你自己在程序中要在出错的时候处理,重试两次。
 
是啊,我自己试过,在一些电脑上可以用,另外一些上面就会出现系统没响应的现象,很不
稳定,真的没有解决的途径了吗?难道真的这么命苦,要通过其他途径去解决,天啊。。。。
谁帮忙解决这个问题,我把所有的积分都给了大家!!!
 
问题解决了,一个牛Boy解决的,方法是将
ole.Run;
ole.DoVerb(1);
两行去掉。
换成下面两行:
Ole.AutoActivate := aaGetFocus ;
Ole.SetFocus ;
 
多人接受答案了。
 
后退
顶部