📄 ftppas.pas
字号:
localdir:=filede.directory+'\'
else
localdir:=filede.directory;
end;
procedure TForm1.filedrChange(Sender: TObject);
begin
localdir:=filedr.Drive+':\';
sb.Panels[2].Text:='本地路径:'+localdir;
end;
procedure TForm1.filedeChange(Sender: TObject);
begin
getlocaldir;
sb.Panels[2].Text:=localdir;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
filedr.Drive:='c';
getlocaldir;//获取当前目录
end;
procedure TForm1.nfpTransactionStop(Sender: TObject);
begin
sb.Panels[1].Text:='数据传输完成';
pb.Position:=pb.Min;
end;
procedure TForm1.nfpPacketSent(Sender: TObject);
begin
pb.max:=nfp.BytesTotal;
pb.min:=0;
pb.Position:=nfp.BytesSent;
end;
procedure TForm1.nfpFailure(var Handled: Boolean; Trans_Type: TCmdType);
var
info:string;
begin
case Trans_Type of
cmdchangedir:
info:='更改当前目录失败';
cmdmakedir:
info:='创建目录失败';
cmdRemovedir:
info:='删除目录失败';
cmddelete:
info:='删除文件失败';
cmdlist:
info:='获取文件列表失败';
cmdrename:
info:='文件改名失败';
cmdupload:
info:='下载文件失败';
cmddownload:
info:='上传文件失败';
cmddocommand:
info:='执行所要求命令失败';
end;
sb.Panels[2].Text:=info;
end;
procedure TForm1.nfpSuccess(Trans_Type: TCmdType);
var
info:string;
begin
case Trans_Type of
cmdchangedir:
info:='更改当前目录成功';
cmdmakedir:
info:='创建目录成功';
cmdRemovedir:
info:='删除目录成功';
cmddelete:
info:='删除文件成功';
cmdlist:
info:='获取文件列表成功';
cmdrename:
info:='文件改名成功';
cmdupload:
info:='下载文件成功';
cmddownload:
info:='上传文件成功';
cmddocommand:
info:='成功执行所要求命令';
end;
sb.Panels[2].Text:=info;
end;
procedure TForm1.N3Click(Sender: TObject);
var
dirname:string;
i:integer;
direxist:boolean;
begin
dirname:=inputbox('新建文件夹','请输要新建文件夹的名称','');
if dirname<>'' then
begin
direxist:=false;
for i:=0 to lbs.items.count-1 do
begin
if (strpos(pchar(lbs.items.Strings[i]),pchar(dirname))<>nil) then
begin
direxist:=true;
break;
end;
end;
if direxist=false then
begin
try
nfp.MakeDirectory(dirname);
except
end;
lbs.Clear;
lbs.Items.add('..');
try
nfp.List;
except
end;
end
else
application.MessageBox('同名文件夹已经存在','无法创建',mb_iconstop+mb_ok);
end
else
application.MessageBox('文件夹名称不能为空','无法创建',mb_iconstop+mb_ok);
end;
procedure TForm1.N4Click(Sender: TObject);
var
i:integer;
spath:string;
begin
spath:='';
for i:=0 to lbs.Items.Count-1 do
begin
if lbs.Selected[i] then
begin
if (strRscan(pchar(lbs.Items.Strings[i]),'/')<>nil)or(lbs.Items.Strings[i]='..') then
begin
if (strRscan(pchar(lbs.Items.Strings[i]),'/')<>nil) then
begin
spath:=lbs.Items.Strings[i];
delete(spath,length(spath),length(spath));
end
else
spath:='..'; //选择了表示上一级目录的标志
break;
end
else
break;//选择了文件
end;
end;
if (spath<>'')and(spath<>'..') then
begin
try
nfp.RemoveDir(spath);
except
sb.Panels[1].Text:='删除文件夹失败';
end;
//刷新服务器端
refreshdir;
end;
end;
procedure TForm1.N5Click(Sender: TObject);
var
i,filec,cou:integer;
spath,stemp:string;
begin
filec:=0; cou:=lbs.SelCount;
for i:=0 to lbs.items.Count-1 do
begin
spath:=lbs.Items.Strings[i];
stemp:=spath;
delete(stemp,1,length(stemp)-1);//取最后一个字符
if (spath='..')or(stemp='/') then
begin
if lbs.Selected[i] then
begin
lbs.Selected[i]:=false;
filec:=filec+1;
end
end;
if lbs.Selected[i] then
begin
filec:=filec+1;
try
nfp.Delete(spath);
except
sb.Panels[1].Text:='文件'+spath+'删除失败';
end;
end;
if filec=cou then
break;
end;
refreshdir;
end;
procedure TForm1.N6Click(Sender: TObject);
var
spath,filen:string;
i,cou,co,j:integer;
filexist:boolean;
begin
cou:=lbs.SelCount;co:=0;
for i:=0 to lbs.items.Count-1 do
begin
if lbs.Selected[i] then
begin
spath:=lbs.Items.Strings[i];
co:=co+1;
if (spath='..')or(strRscan(pchar(spath),'/')<>nil) then
lbs.Selected[i]:=false
else
begin
filen:='';
filen:=inputbox('输入文件名','请输入您希望的名称','');
if filen<>'' then
begin
filexist:=false;
for j:=0 to lbs.Items.Count-1 do
begin
if strpos(pchar(lbs.Items.Strings[j]),pchar(filen))<>nil then
begin
filexist:=true;
break;
end;
end;
if filexist=false then
begin
try
nfp.Rename(spath,filen);
except
sb.Panels[1].Text:='更名失败';
end;
refreshdir;//刷新服务器文件列表
end
else
application.MessageBox('文件名已经存在','系统提醒',mb_iconwarning+mb_ok);
end;
end;
end;
end;
end;
procedure TForm1.N2Click(Sender: TObject);
var
i,cou:integer;
spath,stemp:string;
begin
cou:=lbs.SelCount;
if cou<1 then
begin
application.MessageBox('请先选择好要下载的文件','系统提醒',mb_iconstop+mb_ok);
exit;
end;
for i:=0 to lbs.Items.Count-1 do
begin
spath:=lbs.Items.Strings[i];
stemp:=spath;
delete(stemp,1,length(stemp)-1); //删除去前面所有字符,只留下最后一个
//判断是否为目录
if ((spath='..')or(stemp='/'))and lbs.Selected[i] then
begin
lbs.Selected[i]:=false;
cou:=cou-1;
end;
if cou<1 then
break;//退出循环
if lbs.Selected[i] then
begin
stemp:=spath;
cou:=cou-1;
delete(stemp,length(stemp)-3,3);
if ((stemp='txt')or(stemp='TXT'))or(stemp='Txt') then
begin
rad1.checked:=true;
nfp.Mode(MODE_ASCII);
end
else
begin
rad3.checked:=true;
nfp.Mode(MODE_BYTE);
end;
if localdir='' then
getlocaldir; //获取当前路径
try
nfp.Download(spath,localdir+spath);
sb.Panels[1].Text:='正在下载文件...';
except
sb.Panels[1].Text:='文件'+spath+'下载失败'
end;
filedl.Update;//刷新本地
end;
end;
end;
procedure TForm1.nfpPacketRecvd(Sender: TObject);
begin
pb.max:=nfp.BytesTotal;
pb.min:=0;
pb.Position:=nfp.BytesRecvd;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -