怎样在客户端对三层中的文件进行读写操作(150分)

  • 主题发起人 主题发起人 82625741
  • 开始时间 开始时间
8

82625741

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位:
在三层结构中,我想在客户端读取服务器端的文件或写入到服务器中指定的目录中,请问有没有什么办法实现!
 
中间层实现读写功能,输出方法给客户端调用
 
type
TByteArray = array of byte;

//******************************************************************//
// OleVariantToStream *
// *
// Inserts an OleVariant to a TStream (COM Compatible) *
//******************************************************************
procedure OleVariantToStream(var Input: OleVariant; Stream: TStream);
var
pBuf: Pointer;
begin
pBuf := VarArrayLock(Input);
Stream.Write(TByteArray(pBuf^), Length(TByteArray(Input)));
VarArrayUnlock(Input);
end;


//******************************************************************
// StreamToOleVariant *
// *
// Copies a TStream contents of Count bytes based on the
current Position *
// to an OleVariant (COM Compatible) *
//******************************************************************

function StreamToOleVariant(Stream: TStream; Count: Integer): OleVariant;
var
pBuf: Pointer;
begin
Result := VarArrayCreate([0, Count-1], varByte);
pBuf := VarArrayLock(Result);
Stream.Read(TByteArray(pBuf^), Length(TByteArray(Result)));
VarArrayUnlock(Result);
end;

procedure StoreFile(FileContents: OleVariant);
var
FS: TFileStream;
begin
FS := TFileStream.Create('some file name', fmCreate or fmOpenWrite or fmShareExclusive);
OleVariantToStream(FileContents, FS);
FS.Free;
end;



procedure SendFileToServer(FileName: string);
var
FS: TFileStream;
begin
FS := TFileStream.Create(FileName, fmOpenRead or fmShareCompatible);
MyServer.StoreFile(StreamToOleVariant(FS, FS.Size));
FS.Free;
end;
 
后退
顶部