for i:=0 to BlockNum-1 do
begin
if (StopTrans)or(SendLen<=0) then Break;
BlockRead(Ftrans,BlockBuf[0],BlockLen);
SendLen:=send(Client,BlockBuf,BlockLen,0);
ProBar.Position:=i;
Application.ProcessMessages;
end;
今天参看了一个程序,已将文件划分为BlockNum个模块,在循环读取过程中,如何实现每次接着上一部分读取的继续读而不是重新开始从头读?
begin
if (StopTrans)or(SendLen<=0) then Break;
BlockRead(Ftrans,BlockBuf[0],BlockLen);
SendLen:=send(Client,BlockBuf,BlockLen,0);
ProBar.Position:=i;
Application.ProcessMessages;
end;
今天参看了一个程序,已将文件划分为BlockNum个模块,在循环读取过程中,如何实现每次接着上一部分读取的继续读而不是重新开始从头读?
解决方案 »
- 菜鸟问一简单的问题,大家帮帮忙!!!
- 想挑战难度的快来,如果得到鼠标指针在图片的第几行第几列的像素上?
- Access中用TADOQUARY查询'select * from table where time>=#23:00:00#' 时出错,为何?
- DevExpress中cxGrid使用问题。
- 有没有完全免费的条码打印控件
- 大家谈谈你那里如何防止源代码泄漏?
- 怎样象ehlib的demo1一样,在dbgrideh1其中某个字段选择一下下拉框,下拉框有三个字段,其一字段和就是DBGRIDEH1的字段相同,其他两个字段
- 急,求助:关于flash控件
- 如何显示文件的图标?
- 用什么方法可以解决不设odbc并且可以让用户自己设服务器,用户名,密码
- delphi用sql查询奇怪问题
- 如何让StringGrid不能获得焦点
begin
if (StopTrans)or(SendLen <=0) then Break;
BlockRead(Ftrans,BlockBuf[0],BlockLen);//给你提个醒,这里实际读取的并不一定是你给定的文件长度bolcklen;
SendLen:=send(Client,BlockBuf,BlockLen,0); //所以这里也可能出错
ProBar.Position:=i;
Application.ProcessMessages;
end;
稍微修改一下
for i:=0 to BlockNum-1 do
begin
if (StopTrans)or(SendLen <=0) then Break;
len:=BlockRead(Ftrans,BlockBuf[0],BlockLen);
SendLen:=send(Client,BlockBuf,Len,0);
ProBar.Position:=i;
Application.ProcessMessages;
end;