在DCOM三层结构中如何传输WORD文件,并进行加密存储,服务端方法的数据类型如何选择?有代码吗?200分
解决方案 »
- delphi中LR(0)分析器中的Action表和Goto表是怎么构建的?????
- 各位老师:我想做一个字符串移动程序,有一个timer1 ,一个 edit1 ...
- 怎样为Shape 添加 Handle ,因此我想切割三角形并且绘制成按钮形式(做七巧板用) , 但切割需要Handle ,还有做成按钮形式,有浮起的效果, 请
- Access数据库下的货币类型,在DELPHI下的ADOTable的Fields字段下的数据类型是什么?在线等啊~
- 用ODAC如何取得一个表的字段类型、长度、是否非空
- 求delphi的中文帮助
- MAPOBJECT的问题
- ★Delphi的控制台程序中有没有方法直接判断按下的按键,就像是TP7.0中的readkey,而不用输入回车键?
- 滞纳金收取的实现,有很多问题,帮帮忙!
- inherited;这个关键字是干什么的
- 一般高手未解决
- prepare、unprepare的正确用法?
服务器端:
procedure TEasyDComServer.GetFileStream(var fStream, opResult: OleVariant);
var
P : Pointer;
S : String;
L : LongInt;
mStream : TMemoryStream;
begin
L := VarArrayHighBound(fStream,1)-VarArrayLowBound(fStream,1)+1;
SetLength(S,L);
P := VarArrayLock(fStream);
try
Move(P^,S[1],L);
finally
VarArrayUnlock(fStream);
end;
mStream := TMemoryStream.Create;
mStream.SetSize(L);
mStream.WriteBuffer(Pointer(S)^,L);
mStream.SaveToFile('d:\0004.doc');
opResult := '!!'+Copy(s,1,10);
mStream.Free;
end;
客户端:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
P : Pointer;
L : LongInt;
mStream : TMemoryStream;
V,opResult : Variant;
begin
If OpDlg.Execute then begin
try begin
mStream := TMemoryStream.Create;
mStream.LoadFromFile(OpDlg.FileName);
L := mStream.Size;
V := VarArrayCreate([0,L-1],varByte);
P := VarArrayLock(V);
try
//Move()
mStream.ReadBuffer(P^,L);
finally
VarArrayUnlock(V);
end;
socketConnection1.Connected := True;
socketConnection1.AppServer.GetFileStream(V,opResult);
Memo1.Lines.Add('Return value is:'+opResult);
end;
finally
mStream.Free;
end;
end;
end;我使用的是服务器端通过安全数组获取字符流数据,再存入服务器端的硬盘中,对于大文件比较困难,我在本机上传40M文件花了1分钟。解决方法就是将数据分组,到服务器端拼装。我也只是参考《Delphi 5开发人员指南》上写的,有什么不妥请指正!