我写了一个基于IDTCPClient文件的程序!现在能传输!但是传输出来的文件有点不对!现在我将代码贴出来!比较急!解决好还可以加分!
TIdTCPClient端
procedure TRemoteControlFrm.TheFileDownLoad;
var
DlFm: TSingleDLoadFm;
TheDir: string;
begin
if ListView1.Selected = nil then
begin
Showmessage('请选择要下载的文件');
exit;
end;
TheDir := 'C:\';
if SelectDirectory('下载到目录:', 'Desktop',TheDir ) then
begin
Application.CreateForm(TSingleDLoadFm, DlFm);
DlFm.FileNameText.text := ListView1.Selected.Caption;
DlFm.DownLoadDir.text := TheDir;
DlFm.SrcouceDir.text := RemotePath.Text;
DlFm.IP.Text:=IP.Caption;
DlFm.Show;
end;
end;unit SingleDLoadUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdGlobal, ShellAPI;type
TSingleDLoadFm = class(TForm)
Animate1: TAnimate;
Panel1: TPanel;
CheckBox1: TCheckBox;
BitBtn2: TBitBtn;
BitBtn1: TBitBtn;
Bevel1: TBevel;
ProgressBar1: TProgressBar;
BitBtn3: TBitBtn;
DownLoadTcp: TIdTCPClient;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
FileNameText: TEdit;
DownLoadDir: TEdit;
SrcouceDir: TEdit;
SaveDialog1: TSaveDialog;
IP: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure DownLoadTcpWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure DownLoadTcpWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure DownLoadTcpWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure SrcouceDirMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
TmpFName: string;
AlreadyReadLen, ReadFileLen: integer;
DownStream, ExistStream: TMemoryStream;
public
{ Public declarations }
end;implementation
var
SingleDLoadFm: TSingleDLoadFm; {$R *.dfm}procedure TSingleDLoadFm.BitBtn1Click(Sender: TObject);
var
RetStr: string;
iReturn: integer;
SaveFStream: TFileStream;
begin
begin //============================================================
Animate1.Active := True;
Bitbtn1.Enabled := False;
try //发送下载的文件
DownLoadTcp.Write('文件下载' + EOL); //1-------SendfileCMD
DownLoadTcp.Write(SrcouceDir.Text + FileNameText.Text + EOL); //2-------SendfileName
except
DownLoadTcp.Disconnect;
Animate1.Active := False;
beep;
Self.Caption := '提示:网络信息发送失败!';
exit;
end;
TmpFName := DownLoadDir.Text + FileNameText.Text;
//================================文件接续
try
if FileExists(TmpFName) then
begin
SaveFStream := TFileStream.Create(TmpFName, fmOpenReadWrite);
AlreadyReadLen := SaveFStream.Size;
end
else
begin
SaveFStream := TFileStream.Create(TmpFName, fmCreate);
AlreadyReadLen := 0;
end;
except
beep;
beep;
Self.Caption := '错误提示:请重新指定下载目录!';
exit;
end;
//===============================
try
DownLoadTcp.WriteInteger(AlreadyReadLen); //---send filePos文件位置
except
SaveFStream.free;
Animate1.Active := False;
DownLoadTcp.Disconnect;
Self.Caption := '错误提示:网络信息发送失败!';
exit;
end; try
//iReturn := DownLoadTcp.ReadInteger;
RetStr := DownloadTcp.ReadLn(EOL); //OK
except
SaveFStream.free;
DownLoadTcp.Disconnect;
Animate1.Active := False;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end; if RetStr = 'OK' then //------------------------读取接收标志
begin //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//读数据------------------------开始-----
try
ReadFileLen := DownLoadTcp.ReadInteger; //文件大小
except
SaveFStream.free;
DownLoadTcp.Disconnect;
Animate1.Active := False;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end;
SaveFStream.Position := SaveFStream.Size;
ProgressBar1.Max := ReadFileLen + AlreadyReadLen;
ProgressBar1.Position := 0;
try
DownLoadTcp.ReadStream(SaveFStream, ReadFileLen);
except
SaveFStream.Free;
Animate1.Active := False;
DownLoadTcp.Disconnect;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end;
SaveFStream.free; //下载成功
Bitbtn3.Enabled := True;
beep;
Self.Caption := '下载完毕! 共:' + IntToStr(ProgressBar1.Max) + '字节';
ProgressBar1.Position := ProgressBar1.Max;
Sleep(100);
DownLoadTcp.Disconnect;
Animate1.Active := False;
if checkBox1.Checked then Close;
exit;
end; //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DownLoadTcp.Disconnect; //
Self.Caption := '反馈提示:远程文件定位失败,连接断开!';
Animate1.Active := False;
Bitbtn1.Enabled := True;
exit;
end; //============================================================
beep;
Self.Caption := '提示:网络连接失败!';
end;procedure TSingleDLoadFm.BitBtn2Click(Sender: TObject);
begin
Animate1.Active := false;
DownLoadTcp.Disconnect;
close;
end;procedure TSingleDLoadFm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DownLoadTcp.Disconnect;
DownStream.Free;
ExistStream.Free;
end;procedure TSingleDLoadFm.FormCreate(Sender: TObject);
begin
ProgressBar1.Position := 0;
DownStream := TMemoryStream.Create;
ExistStream := TMemoryStream.Create;
DownLoadTcp.Host:=Ip.Text;
DownLoadTcp.Port:=6000;
if not DownLoadTcp.Connected then DownLoadTcp.Connect;
end;procedure TSingleDLoadFm.BitBtn3Click(Sender: TObject);
begin
ShellExecute(Application.Handle, 'OPEN',
PChar(TmpFName), '', '', SW_SHOWNORMAL);
Close;
end;procedure TSingleDLoadFm.DownLoadTcpWorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
ProgressBar1.Position := 0;
ProgressBar1.Max := AlreadyReadLen + AWorkCountMax;
end;procedure TSingleDLoadFm.DownLoadTcpWorkEnd(Sender: TObject;
AWorkMode: TWorkMode);
begin
Self.Caption := '下载完毕!共下载文件' + IntToStr(ReadFileLen + AlreadyReadLen)
+ '字节';
end;procedure TSingleDLoadFm.DownLoadTcpWork(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCount: Integer);
var
ThePos: int64;
begin
ThePos := ProgressBar1.Position;
ProgressBar1.Position := AlreadyReadLen + AWorkCount;
Self.Caption := '正在下载:' +
IntToStr(ThePos * 100 div ProgressBar1.Max) + '%';
end;procedure TSingleDLoadFm.SrcouceDirMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
(Sender as TEdit).Hint := (Sender as TEdit).Text;
end;end.
TIdTCPClient端
procedure TRemoteControlFrm.TheFileDownLoad;
var
DlFm: TSingleDLoadFm;
TheDir: string;
begin
if ListView1.Selected = nil then
begin
Showmessage('请选择要下载的文件');
exit;
end;
TheDir := 'C:\';
if SelectDirectory('下载到目录:', 'Desktop',TheDir ) then
begin
Application.CreateForm(TSingleDLoadFm, DlFm);
DlFm.FileNameText.text := ListView1.Selected.Caption;
DlFm.DownLoadDir.text := TheDir;
DlFm.SrcouceDir.text := RemotePath.Text;
DlFm.IP.Text:=IP.Caption;
DlFm.Show;
end;
end;unit SingleDLoadUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdGlobal, ShellAPI;type
TSingleDLoadFm = class(TForm)
Animate1: TAnimate;
Panel1: TPanel;
CheckBox1: TCheckBox;
BitBtn2: TBitBtn;
BitBtn1: TBitBtn;
Bevel1: TBevel;
ProgressBar1: TProgressBar;
BitBtn3: TBitBtn;
DownLoadTcp: TIdTCPClient;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
FileNameText: TEdit;
DownLoadDir: TEdit;
SrcouceDir: TEdit;
SaveDialog1: TSaveDialog;
IP: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure DownLoadTcpWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure DownLoadTcpWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure DownLoadTcpWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure SrcouceDirMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
TmpFName: string;
AlreadyReadLen, ReadFileLen: integer;
DownStream, ExistStream: TMemoryStream;
public
{ Public declarations }
end;implementation
var
SingleDLoadFm: TSingleDLoadFm; {$R *.dfm}procedure TSingleDLoadFm.BitBtn1Click(Sender: TObject);
var
RetStr: string;
iReturn: integer;
SaveFStream: TFileStream;
begin
begin //============================================================
Animate1.Active := True;
Bitbtn1.Enabled := False;
try //发送下载的文件
DownLoadTcp.Write('文件下载' + EOL); //1-------SendfileCMD
DownLoadTcp.Write(SrcouceDir.Text + FileNameText.Text + EOL); //2-------SendfileName
except
DownLoadTcp.Disconnect;
Animate1.Active := False;
beep;
Self.Caption := '提示:网络信息发送失败!';
exit;
end;
TmpFName := DownLoadDir.Text + FileNameText.Text;
//================================文件接续
try
if FileExists(TmpFName) then
begin
SaveFStream := TFileStream.Create(TmpFName, fmOpenReadWrite);
AlreadyReadLen := SaveFStream.Size;
end
else
begin
SaveFStream := TFileStream.Create(TmpFName, fmCreate);
AlreadyReadLen := 0;
end;
except
beep;
beep;
Self.Caption := '错误提示:请重新指定下载目录!';
exit;
end;
//===============================
try
DownLoadTcp.WriteInteger(AlreadyReadLen); //---send filePos文件位置
except
SaveFStream.free;
Animate1.Active := False;
DownLoadTcp.Disconnect;
Self.Caption := '错误提示:网络信息发送失败!';
exit;
end; try
//iReturn := DownLoadTcp.ReadInteger;
RetStr := DownloadTcp.ReadLn(EOL); //OK
except
SaveFStream.free;
DownLoadTcp.Disconnect;
Animate1.Active := False;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end; if RetStr = 'OK' then //------------------------读取接收标志
begin //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//读数据------------------------开始-----
try
ReadFileLen := DownLoadTcp.ReadInteger; //文件大小
except
SaveFStream.free;
DownLoadTcp.Disconnect;
Animate1.Active := False;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end;
SaveFStream.Position := SaveFStream.Size;
ProgressBar1.Max := ReadFileLen + AlreadyReadLen;
ProgressBar1.Position := 0;
try
DownLoadTcp.ReadStream(SaveFStream, ReadFileLen);
except
SaveFStream.Free;
Animate1.Active := False;
DownLoadTcp.Disconnect;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end;
SaveFStream.free; //下载成功
Bitbtn3.Enabled := True;
beep;
Self.Caption := '下载完毕! 共:' + IntToStr(ProgressBar1.Max) + '字节';
ProgressBar1.Position := ProgressBar1.Max;
Sleep(100);
DownLoadTcp.Disconnect;
Animate1.Active := False;
if checkBox1.Checked then Close;
exit;
end; //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DownLoadTcp.Disconnect; //
Self.Caption := '反馈提示:远程文件定位失败,连接断开!';
Animate1.Active := False;
Bitbtn1.Enabled := True;
exit;
end; //============================================================
beep;
Self.Caption := '提示:网络连接失败!';
end;procedure TSingleDLoadFm.BitBtn2Click(Sender: TObject);
begin
Animate1.Active := false;
DownLoadTcp.Disconnect;
close;
end;procedure TSingleDLoadFm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DownLoadTcp.Disconnect;
DownStream.Free;
ExistStream.Free;
end;procedure TSingleDLoadFm.FormCreate(Sender: TObject);
begin
ProgressBar1.Position := 0;
DownStream := TMemoryStream.Create;
ExistStream := TMemoryStream.Create;
DownLoadTcp.Host:=Ip.Text;
DownLoadTcp.Port:=6000;
if not DownLoadTcp.Connected then DownLoadTcp.Connect;
end;procedure TSingleDLoadFm.BitBtn3Click(Sender: TObject);
begin
ShellExecute(Application.Handle, 'OPEN',
PChar(TmpFName), '', '', SW_SHOWNORMAL);
Close;
end;procedure TSingleDLoadFm.DownLoadTcpWorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
ProgressBar1.Position := 0;
ProgressBar1.Max := AlreadyReadLen + AWorkCountMax;
end;procedure TSingleDLoadFm.DownLoadTcpWorkEnd(Sender: TObject;
AWorkMode: TWorkMode);
begin
Self.Caption := '下载完毕!共下载文件' + IntToStr(ReadFileLen + AlreadyReadLen)
+ '字节';
end;procedure TSingleDLoadFm.DownLoadTcpWork(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCount: Integer);
var
ThePos: int64;
begin
ThePos := ProgressBar1.Position;
ProgressBar1.Position := AlreadyReadLen + AWorkCount;
Self.Caption := '正在下载:' +
IntToStr(ThePos * 100 div ProgressBar1.Max) + '%';
end;procedure TSingleDLoadFm.SrcouceDirMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
(Sender as TEdit).Hint := (Sender as TEdit).Text;
end;end.
解决方案 »
- 鼠标离开时,按钮恢复颜色???
- FastReport,Report Machine的脚本有什么作用的?3Q
- 请大虾快救我!我的主窗口设为MDIFORM,其中放置了面板,可在菜单中为什么打不开子窗口,(子窗口是MDICHILD)?
- 请问大家怎么样用程序监控文件的拷贝的情况,即当有文件拷贝时就复制一份到指定的地方?
- d7的IdHTTP怎么实现访问带有访问用户名和密码的网页?
- 查Query中,如何进行DataSet动态加载字段列表?
- 手头分多,我也问个问题,顺便送点分(up,gz这类不送 呵呵)
- Delphi6突然醒了?!
- 请教数据库问题
- 加急问题,sql server2000的登录?
- 怎样降低CPU利用率?????
- 关于备份及恢复的问题,都来看看
控件试卷给个大概
procedure TMainFrm.IdTCPServerExecute(AThread: TIdPeerThread);
var
Operation,filename,CmdIni,CMDType,SvrName,SharePath: string;
ProID,SvrOP:integer;
SP: PChar;
begin
if Assigned(AThread) then
begin
with AThread.Connection do
begin
try
Operation := ReadLn;
if trim(Operation) <> '' then
begin
if Operation = '文件下载' then
begin
DownLoadFileProc(AThread);
end
end;
end;、、、、、、、、、、、、、、、、、、、、
procedure DownLoadFileProc(AThread: TIdPeerThread);
var
DownLoadThread: TDownLoadThread; //按位置下载文件
TheFileName: string;
ThePosition: integer;
FromF: file of byte;
FileLen: integer;
begin
try
TheFileName := AThread.Connection.ReadLn(EOL);
ThePosition := AThread.Connection.ReadInteger;
except
AThread.Connection.Disconnect;
exit;
end;
if FileExists(TheFileName) then
begin try
AThread.Connection.Write('OK' + EOL);
except
AThread.Connection.Disconnect;
exit;
end;
try
DownLoadThread := TDownLoadThread.Create(AThread,
TheFileName, ThePosition);
exit;
except
AThread.Connection.Disconnect;
exit;
end;
end
else
begin
try
AThread.Connection.Write('文件不存在' + EOL);
AThread.Connection.Disconnect;
except
AThread.Connection.Disconnect;
end;
end;
end;
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
unit DownLoadFileUnit;interfaceuses
Classes, IdTCPServer, IdGlobal, ComCtrls, SysUtils;type
TDownLoadThread = class(TThread)
private
TheFileName, TheUserName: string;
ThePosition: integer;
SysThread: TIdPeerThread;
protected
procedure Execute; override;
public
constructor Create(AThread: TIdPeerThread; TFN: string; ThePos:
integer);
destructor Destroy; override;
end;implementation
constructor TDownLoadThread.Create(AThread: TIdPeerThread;
TFN: string; ThePos: integer);
begin
inherited Create(True);
TheFileName := TFN;
ThePosition := ThePos;
SysThread := AThread;
FreeOnTerminate := True;
Suspended := false;
end;procedure TDownLoadThread.Execute;
var
FromF: file of byte;
FileLen: integer;
NumRead, NumWritten: Integer;
Buf: array[1..32768] of Char;
tmStr:Tmemorystream;
begin
try
AssignFile(FromF, TheFileName);
FileMode := 0;
Reset(FromF);
Seek(FromF, ThePosition);
except
try
CloseFile(FromF);
except
end;
Self.Terminate;
exit;
end;
try
FileLen := FileSize(FromF);
SysThread.Connection.WriteInteger(FileLen-ThePosition);
except
CloseFile(FromF);
Self.Terminate;
exit;
end;
repeat
try
SysThread.Connection.OpenWriteBuffer;
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
SysThread.Connection.WriteBuffer(Buf, NumRead);
SysThread.Connection.CloseWriteBuffer;
except
CloseFile(FromF);
exit;
end;
until (NumRead = 0);
CloseFile(FromF);
end;destructor TDownLoadThread.Destroy;
begin
inherited destroy;
end;
end.
procedure DownLoadFileProc(AThread: TIdPeerThread);
var
DownLoadThread: TDownLoadThread; //按位置下载文件
TheFileName: string;
ThePosition: integer;
FromF: file of byte;
FileLen: integer;
FileStream:TMemoryStream;
fStream:TMemoryStream;
begin
try
TheFileName := AThread.Connection.ReadLn(EOL);
ThePosition := AThread.Connection.ReadInteger;
except
AThread.Connection.Disconnect;
exit;
end;
if FileExists(TheFileName) then
begin
DownLoadThreadExecute(AThread,TheFileName, ThePosition);
end
else
begin
try
AThread.Connection.Write('文件不存在' + EOL);
AThread.Connection.Disconnect;
except
AThread.Connection.Disconnect;
end;
end;
end;procedure DownLoadThreadExecute(AThread: TIdPeerThread; TheFileName: string; ThePosition:integer);
var
FromF: file ;
FileLen,BufferTotalNum: integer;
NumRead, NumWritten: Integer;
Buf: array[1..32768] of Char;
tmStr:Tmemorystream;
begin
try
AssignFile(FromF, TheFileName);
FileMode := 0;
Reset(FromF,1);
FileLen := FileSize(FromF);
Seek(FromF, ThePosition);
except
try
CloseFile(FromF);
except
end;
exit;
end;
try
AThread.Connection.Write('OK'+inttostr(FileLen-ThePosition)+EOL);
except
CloseFile(FromF);
exit;
end;
NumRead:=0;
BufferTotalNum:=ThePosition; repeat
try
AThread.Connection.OpenWriteBuffer;
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
AThread.Connection.WriteBuffer(Buf, NumRead);
AThread.Connection.CloseWriteBuffer;
BufferTotalNum:=BufferTotalNum+NumRead;
except
CloseFile(FromF);
exit;
end;
until (BufferTotalNum=FileLen);
CloseFile(FromF);
if AThread.Connection.Connected then
AThread.Connection.Disconnect;end;
DownLoadTcp.Write('文件下载' + EOL); //1-------SendfileCMD
DownLoadTcp.Write(SrcouceDir.Text + FileNameText.Text + EOL); //2-------SendfileName
except
DownLoadTcp.Disconnect;
Animate1.Active := False;
beep;
Self.Caption := '提示:网络信息发送失败!';
exit;
end;
TmpFName := DownLoadDir.Text + FileNameText.Text;
//================================文件接续
try
if FileExists(TmpFName) then
begin
SaveFStream := TFileStream.Create(TmpFName, fmOpenReadWrite);
AlreadyReadLen := SaveFStream.Size;
end
else
begin
SaveFStream := TFileStream.Create(TmpFName, fmCreate);
AlreadyReadLen := 0;
end;
except
beep;
beep;
Self.Caption := '错误提示:请重新指定下载目录!';
exit;
end;
//===============================
try
DownLoadTcp.WriteInteger(AlreadyReadLen); //---send filePos文件位置
except
SaveFStream.free;
Animate1.Active := False;
DownLoadTcp.Disconnect;
Self.Caption := '错误提示:网络信息发送失败!';
exit;
end; try
RetStr := DownloadTcp.ReadLn(EOL); //OK
except
SaveFStream.free;
DownLoadTcp.Disconnect;
Animate1.Active := False;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end; if copy(RetStr,1,2) = 'OK' then //------------------------读取接收标志
begin //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//读数据------------------------开始-----
try
Delete(RetStr,1,2);
ReadFileLen:=strtoint(RetStr);//文件大小
except
SaveFStream.free;
DownLoadTcp.Disconnect;
Animate1.Active := False;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end;
SaveFStream.Position := SaveFStream.Size;
ProgressBar1.Max := ReadFileLen + AlreadyReadLen;
ProgressBar1.Position := 0;
try
DownLoadTcp.ReadStream(SaveFStream, ReadFileLen);
except
SaveFStream.Free;
Animate1.Active := False;
DownLoadTcp.Disconnect;
Self.Caption := '错误提示:远程网络断开,接收失败!';
exit;
end;
SaveFStream.free; //下载成功
Bitbtn3.Enabled := True;
beep;
Self.Caption := '下载完毕! 共:' + IntToStr(ProgressBar1.Max) + '字节';
ProgressBar1.Position := ProgressBar1.Max;
Sleep(100);
DownLoadTcp.Disconnect;
Animate1.Active := False;
if checkBox1.Checked then Close;
exit;
end;