NMStrmServ 问题,请高手帮忙。100分(100分)

  • 主题发起人 主题发起人 q.yuhen
  • 开始时间 开始时间
Q

q.yuhen

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用了NMStrmServ作为文件流的接收方。同时
使用一个ProgressBar显示进度。由于NMStrmServ
没有直接提供OnPacketRecvd事件,我使用了下面的
方法,却不起作用,请高手指教。

procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream);
var Stream2:TFileStream;
F:String;
begin
F:='D:/temp/demo.zip';
IF FileExists(F) then DeleteFile(F);

Stream2:=TFileStream.Create(F,fmCreate);
Stream2.CopyFrom(strm, strm.size);
Stream2.Free;
end;

procedure TForm1.PacketRecvd(Sender: TObject);
Begin
ProgressBar1.Max:=NMStrmServ1.BytesTotal;
ProgressBar1.Position:=NMStrmServ1.BytesRecvd;
End;

procedure TForm1.FormCreate(Sender: TObject);
begin
NMStrmServ1.OnPacketRecvd:=PacketRecvd;
end;
 
先根据BytesTotal算一下总共要多少次传完(每次2K),假设算出来N次传完
在OnMSG事件里放一个计数器i,传一次加1,同时操作进度条
  ProgressBar1.Postion := I*2*1024
 
接受答案了.
 
后退
顶部