VBA、SOCKET、ActiveX高手可以讨论一下么?(100分)

  • 主题发起人 主题发起人 china_hj
  • 开始时间 开始时间
C

china_hj

Unregistered / Unconfirmed
GUEST, unregistred user!
最近正在涉及这方面的东东!有很多问题出现!请各位大大不吝指教!
1、我做的有关VBA(OleContainer)的ActiveX使用的时候!在WORD中如果安装插件使用就会不正常!
打开的方法如下:
OleContainer1.CreateObjectFromFile (temppath+Word_id+'.doc' ,false) ;
OleContainer1.DoVerb (-1) ;


2、有没办法提高程序的速度呢!我的文件传输是使用的socket!

3、有没相关的WORD资料参考呢!
 
Word 在线文档
 
word中也有帮助呀
 
感谢jsxjd,、qianwt的参与![:)]
页面需要刷新才能将下载的word文件打开!而且如果打开也非常的慢!有没好的办法解决呢!
我调试的机器运行的时候没有问题!但是如果那一台安装了金山词霸或者快译就会打不开!
另:正在看Word文档!
代码如下!
procedure TLx_Word.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
buffer : pointer ;
fs : Tfilestream ;
mess :integer ;
f_size:longword ;
const buffersize = 4096 ;
begin

IF LOG then
begin
socket.receivebuf(nRetr,sizeof(longword));
nRetr :=ntohl(nRetr) ;
LOG :=FALSE ;
END
else
begin
getmem(buffer,buffersize);
mess :=socket.receivebuf(buffer^,buffersize);
if not Fileexists(temppath+Word_id+'.doc') then
begin
fs :=Tfilestream.create(temppath+Word_id+'.doc',fmCreate or fmShareDenyNone);
fs.seek(0,soFrombegin
ning);
end else
begin
fs :=Tfilestream.create(temppath+Word_id+'.doc',fmopenwrite or fmShareDenyNone);
fs.seek(0,soFromEnd)
end ;
fs.writebuffer(buffer^,mess);
f_size := fs.Size ;
fs.destroy;
freemem(buffer);
if f_size >= nRetr then
begin
// showmessage('3');
case strtoint(Oper_id) of
1 : //新建
begin
OleContainer1.Enabled := true ;
OleContainer1.CreateObjectFromFile (temppath+Word_id+'.doc' ,false) ;
OleContainer1.DoVerb (-1) ;
panel1.Visible := false ;
OleContainer1.OleObject.application.UserName := p_name ;
end ;
2 : //审批
begin
// showmessage('3');
OleContainer1.Enabled := true ;
OleContainer1.CreateObjectFromFile (temppath+Word_id+'.doc' ,false) ;
OleContainer1.DoVerb (-1) ;
panel1.Visible := false ;
// showmessage('开始审批');
OleContainer1.OleObject.PrintRevisions :=true ;
OleContainer1.OleObject.ShowRevisions :=true ;
OleContainer1.OleObject.TrackRevisions := true ;
OleContainer1.OleObject.application.UserName := p_name ;
LOG :=TRUE ;
end ;
3 : //查阅
begin
OleContainer1.Enabled := true ;
OleContainer1.CreateObjectFromFile (temppath+Word_id+'.doc' ,false) ;
OleContainer1.DoVerb (ovShow) ;
panel1.Visible := false ;
LOG :=TRUE ;
end;
4 : //待设
begin
end;
End
end
end;
end;

 
使用该方法最近发现接受数据总是大小不一!服务器端为VC的socket!
例如果传上的文件为628KB!则有时客户端接受大小符合!有时又差一点点!621-617KB
但是在我的调试的机器上却没有什么问题!(使用Tmomerystream或者如上的Tfilestream都有该问题!)
 
还没有人加入讨论么!:(
还是结束吧!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
466
import
I
后退
顶部