📄 tsearchdlthreadunit.~pas
字号:
unit TSearchDLThreadUnit;
interface
uses
Classes, IdTCPServer,IdGlobal,ComCtrls,SysUtils;
type
TSearchDLThread = class(TThread)
private
TheFileName,TheUserName:String;
SysThread:TIdPeerThread;
Procedure RegisteLog;
protected
procedure Execute; override;
Public
constructor Create(AThread: TIdPeerThread;TFN,TUN:String);
procedure RunIt;
destructor Destroy; override;
end;
implementation
uses APFUnit,Unit2;
constructor TSearchDLThread.Create(AThread: TIdPeerThread;
TFN,TUN:String);
begin
TheFileName:=TFN;
TheUserName:=TUN;
SysThread:=AThread;
FreeOnTerminate:=True;
inherited Create(True);
end;
procedure TSearchDLThread.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 TSearchDLThread.RunIt;
begin
Self.Execute;
end;
procedure TSearchDLThread.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,0);
except
CloseFile(FromF);
Self.Terminate;
exit;
end;
try
FileLen:=FileSize(FromF);
SysThread.Connection.WriteInteger(FileLen);
except
CloseFile(FromF);
Self.Terminate;
exit;
end;
try
repeat
SysThread.Connection.OpenWriteBuffer;
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
SysThread.Connection.WriteBuffer(Buf,NumRead);
SysThread.Connection.CloseWriteBuffer;
until (NumRead = 0);
except
end;
CloseFile(FromF);
self.Terminate;
end;
destructor TSearchDLThread.Destroy;
begin
inherited destroy;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -