📄 downloadfileunit.~pas
字号:
unit DownLoadFileUnit;
interface
uses
Classes, IdTCPServer,IdGlobal,ComCtrls,SysUtils;
type
TDownLoadThread = class(TThread)
private
TheFileName,TheUserName:String;
ThePosition:integer;
SysThread:TIdPeerThread;
Procedure RegisteLog;
protected
procedure Execute; override;
Public
constructor Create(AThread: TIdPeerThread;TFN,TUN:String;ThePos:integer);
destructor Destroy; override;
end;
implementation
uses APFUnit,Unit2;
constructor TDownLoadThread.Create(AThread: TIdPeerThread;
TFN,TUN:String;ThePos:integer);
begin
inherited Create(True);
TheFileName:=TFN;
TheUserName:=TUN;
ThePosition:=ThePos;
SysThread:=AThread;
FreeOnTerminate:=True;
Suspended := false;
end;
procedure TDownLoadThread.RegisteLog;
var
TheListItem:TListItem;
begin
if Form2.LogCheckBox.Checked=false then exit;
TheListItem:=Form2.ListView5.Items.Insert(0);
TheListItem.Caption:=SysThread.Connection.Binding.PeerIP;
TheListItem.StateIndex:=9;
TheListItem.SubItems.Add(TheUserName);
TheListItem.SubItems.Add('文件下载');
TheListItem.SubItems.Add(TheFileName);
TheListItem.SubItems.Add(DateTimeToStr(now));
end;
procedure TDownLoadThread.Execute;
var
FromF: file of byte;
FileLen:integer;
NumRead, NumWritten: Integer;
Buf: array[1..32768] of Char;
begin
Synchronize(RegisteLog);
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);
SysThread.Connection.Disconnect;
self.Terminate;
end;
destructor TDownLoadThread.Destroy;
begin
inherited destroy;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -