⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftppas.~pas

📁 基于delphi的FPT文件传输系统,希望对大家有用
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
     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 + -