学习咏南BLOG的datasanp 用流下载文件,同时记录WINDOWS系统日志

服务器端:

function TServerMethods1.getfile(filename: string): TStream;
var
   FilePath,DownFile:String;
   FS:TFileStream;
   log:TEventLogger ;//需要在USES里加上 Vcl.SvcMgr,才可以引用TEventLogger
begin
   FilePath:='d:\xe\';
   DownFile:=FilePath+FileName;
   log:=TEventLogger.Create('MyMessage');//创建一个消息
   log.LogMessage(DownFile);//输出一个消息
   result:=nil;
   if not FileExists(DownFile) then begin
    log.LogMessage('文件不存在');//在输出一个,会产生两条日志
   Exit;
   end;
   result:=TFileStream.Create(DownFile,fmOpenRead);
   if result<>nil then
      Result.Position:=0;
end;

 

客户端:

procedure TForm4.btn1Click(Sender: TObject);
const
  bufferSize=10240;
var
   con:TServerMethods1Client;
   FStream:TStream;
   FileFs:TFileStream;
   buffer:TBytes;
   count:Integer;
begin
   con:=TServerMethods1Client.Create(SQLConnection1.DBXConnection);
   count:=0;
   SetLength(Buffer, bufferSize);

//从服务器上下载来以后,更名delphidown.pdf'
    FileFs:=TFileStream.Create('d:\delphidown.pdf',fmCreate);

 

try
   FStream:=con.getfile('delphi.pdf');//服务器上的文件名,服务器上必需要有
   edt1.Text:=con.ReverseString('abc');//这个用来掉用自带的一个字符串翻转的例子
   repeat
     count:=FStream.Read(buffer[0],bufferSize);//不停的读流
     if count>0 then

//不停的读流的写流,写到'd:\delphidown.pdf'
       FileFs.WriteBuffer(buffer[0],count);

 

      until (count<bufferSize);
      except

   end;
end;

注意的地方:

 

1、 windows要启用日志服务。要不然看到输出的日志了。

image

2、查看日子

  在计算机管理可以查看系统日志:如图

image

你可能感兴趣的:(windows)