亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? u_ftptool.~pas

?? 一個小的ftp程序
?? ~PAS
字號:
//----------------------------------------------//
//只寫了一個上傳,是因為一個朋友只要上傳功能,下載//
//就沒有寫,把源碼貼出來供大家學習,當時著急沒寫幾//
//行注釋,見諒                                   //
//可以上傳整個目錄,單線程                       //
//QQ:5659170  網蟲先生                          //
//----------------------------------------------//

unit U_FtpTool;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP, FileCtrl,IdFTPCommon, ExtCtrls, ComCtrls,IdFTPList,
  ImgList,IdGlobal,StrUtils, ShellCtrls, Buttons;

type
  TMyFirstThread = class(TThread)
  private

  protected
    procedure Execute;override;
  end;

type
  TForm1 = class(TForm)
    IdFTP1: TIdFTP;
    ImageList1: TImageList;
    ImageList2: TImageList;
    Panel1: TPanel;
    Label1: TLabel;
    HostEdit: TEdit;
    Label2: TLabel;
    UserIDEdit: TEdit;
    Label3: TLabel;
    PasswordEdit: TEdit;
    Label4: TLabel;
    PortEdit: TEdit;
    Button1: TButton;
    Panel2: TPanel;
    ShellComboBox1: TShellComboBox;
    ShellListView1: TShellListView;
    Panel3: TPanel;
    ListView1: TListView;
    Panel4: TPanel;
    CurrentDirEdit: TEdit;
    SpeedButton1: TSpeedButton;
    Label5: TLabel;
    Button2: TButton;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    ListBox1: TListBox;
    Panel5: TPanel;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCount: Integer);
    procedure FormCreate(Sender: TObject);
    procedure IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
      const AWorkCountMax: Integer);
    procedure IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    procedure PasswordEditKeyPress(Sender: TObject; var Key: Char);
  private
    ByteCount:Integer;
    YUpLoadByte:integer;
    Thread1:TMyFirstThread;
    UpLoadType:String;//'1'表示上傳類型是文件夾,'0'表示上傳類型是文件
    FileSize:Integer;
    procedure List(DirName:string);
    procedure UpLoad(Remote_path,Local_path:string);
    function GetDirectorySize(ADirectory: string): Integer;
    procedure AfterUpLoad(Send : TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses U_ModalDialog;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IdFTP1.Connected then
     IdFTP1.Disconnect;
  IdFTP1.Host:=Trim(HostEdit.Text);
  if Trim(UserIDEdit.Text)='' then
  begin
    IdFTP1.Username:='anonymous';
    IdFTP1.Password:='';
  end
  else
  begin
    IdFTP1.Username:=Trim(UserIDEdit.Text);
    IdFTP1.Password:=Trim(PasswordEdit.Text);
  end;
  IdFTP1.Port:=StrToInt(PortEdit.Text);
  try
    IdFTP1.Connect;
  except
    ShowMessage('連接失敗');
  end;
  CurrentDirEdit.Text:='/';
  Self.List(CurrentDirEdit.Text);
  Button2.Enabled:=True;
  Panel3.Visible:=True;
end;


procedure TForm1.UpLoad(Remote_path,Local_path:string);
var strl1,strl2,strl3:TStringList;
    sr: TSearchRec;
    i,j,DirCount,FileCount:integer;
    str:string;
begin
  IdFTP1.ChangeDir(Remote_path);

  DirCount:=0;FileCount:=0;

  IdFTP1.MakeDir(Copy(Local_path,LastDelimiter('\',Local_path)+1,length(Local_path)));

  if FindFirst(Local_path + '\*.*', faDirectory, sr) = 0 then
  begin
    strl1:=TStringList.Create;
    repeat
      if (sr.Attr = faDirectory) and(sr.Name<>'.') and (sr.Name<>'..') then
      begin
        strl1.Add(sr.Name);
        Inc(DirCount);
      end;
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;

  for i:=0 to DirCount-1 do
  begin
    UpLoad(Remote_path+'/'+Copy(Local_path,LastDelimiter('\',Local_path)+1,length(Local_path)),Local_path+'\'+strl1.Strings[i]);
  end;

  if FindFirst(Local_path + '\*.*',faAnyFile, sr )=0 then
  begin
    strl2:=TStringList.Create;
    repeat
      if (sr.Attr <> faDirectory) then
      begin
        strl2.Add(sr.Name);
        Inc(FileCount);
      end;
    until FindNext(sr) <>0;
    FindClose(sr);
  end;

  IdFTP1.ChangeDir(Remote_path+'/'+Copy(Local_path,LastDelimiter('\',Local_path)+1,length(Local_path)));

  for j:=0 to FileCount-1 do
  begin
    try
      IdFTP1.Put(Local_path+'\'+strl2[j],IdFTP1.RetrieveCurrentDir+'/'+strl2[j]);
      ListBox1.Items.Add('@_@   '+strl2[j]+'上傳成功!');
    except
      ListBox1.Items.Add(':o   '+strl2[j]+'上傳失敗!');
      Continue;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var strl1:TStringList;
    i:integer;
begin
  if ShellListView1.SelectedFolder=nil then
  begin
    ShowMessage('請選擇要上傳的文件或文件夾');
    Exit;
  end;

  strl1:=TStringList.Create;

  for i:=0 to IdFTP1.DirectoryListing.Count-1 do
  begin
    strl1.Add(IdFTP1.DirectoryListing.Items[i].FileName);
  end;

  for i:=0 to strl1.Count-1 do
  begin
    if strl1[i] <> ShellListView1.SelectedFolder.DisplayName then
       Continue
    else
    begin
     if Application.MessageBox('目錄或文件已經存在,是否替換?','提示',MB_OkCancel+MB_IconQuestion)=IdOk then
     begin
       IdFTP1.Delete(strl1[i]);
     end
     else
     begin
       Exit;
     end;
//      ShowMessage('目錄或文件已經存在');
//      Exit;
    end;
  end;
  Button2.Enabled:=False;
  ListBox1.Clear;
  if ShellListView1.SelectedFolder.IsFolder then
  begin
    UpLoadType:='1';
    YUpLoadByte:=0;
    ProgressBar1.Position:=0;
    ByteCount:=GetDirectorySize(ShellListView1.SelectedFolder.PathName);
    ProgressBar1.Min:=0;
    ProgressBar1.Max:=ByteCount;
  end;

  if not ShellListView1.SelectedFolder.IsFolder then
  begin
     UpLoadType:='0';
     YUpLoadByte:=0;
     ProgressBar1.Position:=0;
     ByteCount:=FileSizeByName(ShellListView1.SelectedFolder.PathName);
     ProgressBar1.Max:=ByteCount;
  end;
  if not Assigned(Form2) then
     Form2:=TForm2.Create(Application);
  Form2.Show;
  Form1.ListView1.Enabled:=False;
  Form1.Button1.Enabled:=False;
  Thread1:=TMyFirstThread.Create(False);
  Thread1.Priority:=tpNormal;
  Thread1.OnTerminate:=AfterUpLoad;
  Thread1.FreeOnTerminate:=True;
end;

procedure TForm1.List(DirName: string);
var NewItem:TListItem;
    i:integer;
    LS: TStringList;
begin
  Ls:=TStringList.Create;

  ListView1.Clear;
  IdFTP1.ChangeDir(DirName);
  IdFTP1.List(Ls);
  CurrentDirEdit.Text:=IdFTP1.RetrieveCurrentDir;
  for i:=0 to IdFTP1.DirectoryListing.Count-1 do
  begin
    With IdFTP1.DirectoryListing.Items[i] do
    begin
      if (FileName='.') OR (FileName='..')  then Continue;
      NewItem:=ListView1.Items.Add;
      NewItem.Caption:=FileName;
      NewItem.SubItems.Add(IntToStr(Size));
      if ItemType = ditDirectory then
      begin
         NewItem.StateIndex:=0;
         NewItem.SubItems.Add('文件文件夾');
      end
      else
      begin
        NewItem.SubItems.Add('其它類型');
      end;
      NewItem.SubItems.Add(FormatDateTime('yyyy/mm/dd hh:mm', ModifiedDate));
      NewItem.SubItems.Add(OwnerName);
    end;
  end;
end;

procedure TForm1.ListView1DblClick(Sender: TObject);
begin
  if ListView1.Selected=nil then Exit;
  if  IdFTP1.DirectoryListing.Items[ListView1.ItemIndex].ItemType = ditDirectory then
      Self.List(ListView1.Items[ListView1.ItemIndex].Caption);
end;


procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if IdFTP1.RetrieveCurrentDir<>'/' then
     Self.List('..');
end;

procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  ProgressBar1.Position:=AWorkCount+YUpLoadByte;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ByteCount:=0;
  YUpLoadByte:=0;
end;

function TForm1.GetDirectorySize(ADirectory: string): Integer;
var
  Dir: TSearchRec;
  Ret: integer;
  Path: string;
begin
  Result := 0;
  Path := ExtractFilePath(ADirectory);
  Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
  if Ret <> NO_ERROR then exit;
  try
    while ret = NO_ERROR do
    begin
      inc(Result, Dir.Size);
      if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '.') then
        Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*'));
      Ret := Sysutils.FindNext(Dir);
    end;
  finally
    Sysutils.FindClose(Dir);
  end;
end;

{ TMyFirstThread }

procedure TForm1.AfterUpLoad(Send : TObject);
begin
  Form1.ListBox1.Items.Add('全部上傳完成');
  Form1.List(Form1.CurrentDirEdit.Text);
  Form1.Button2.Enabled:=True;
  Form1.Button1.Enabled:=True;
  Form1.ListView1.Enabled:=True;
  Form2.Close;
end;

procedure TMyFirstThread.Execute;
begin
  inherited;
  if Form1.UpLoadType='1' then
     Form1.UpLoad(Form1.IdFTP1.RetrieveCurrentDir,Form1.ShellListView1.SelectedFolder.PathName);
  if Form1.UpLoadType='0' then
  begin
    try
      Form1.IdFTP1.Put(Form1.ShellListView1.SelectedFolder.PathName,Form1.IdFTP1.RetrieveCurrentDir+'/'+Form1.ShellListView1.SelectedFolder.DisplayName);
      Form1.ListBox1.Items.Add('@_@   '+Form1.ShellListView1.SelectedFolder.DisplayName+'上傳成功!');
    except
      Form1.ListBox1.Items.Add(':o   '+Form1.ShellListView1.SelectedFolder.DisplayName+'上傳失敗!');
    end;
  end;
end;

procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  FileSize:=AWorkCountMax;
end;

procedure TForm1.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  YUpLoadByte:=YUpLoadByte+FileSize;
end;

procedure TForm1.PasswordEditKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
     Button1.Click;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜激情欧洲亚洲| 欧洲一区二区三区免费视频| 午夜激情一区二区三区| 一区二区三区四区中文字幕| 亚洲女爱视频在线| 亚洲成精国产精品女| 午夜一区二区三区在线观看| 五月天亚洲精品| 精品一区二区三区日韩| 国产黄色91视频| 91在线国产福利| 欧美日韩一区二区三区免费看 | 久久精品99国产精品| 免费久久99精品国产| 激情综合色播五月| 成人爽a毛片一区二区免费| 一本一道久久a久久精品| 欧美视频三区在线播放| 欧美肥妇free| 国产日产亚洲精品系列| 亚洲欧美激情小说另类| 男男视频亚洲欧美| 国产成人自拍高清视频在线免费播放| 成人av免费在线观看| 欧美日韩精品一区二区三区四区 | 日本视频在线一区| 国产乱理伦片在线观看夜一区| aaa国产一区| 在线播放/欧美激情| 国产精品久久久久久户外露出| 玉米视频成人免费看| 久久er99热精品一区二区| 99精品视频一区| 精品国精品自拍自在线| 亚洲美女淫视频| 国产一区二区福利| 欧美日韩激情在线| 中文字幕成人网| 美女视频黄 久久| 91福利在线导航| 国产精品伦理在线| 久久国产麻豆精品| 欧美三级三级三级| 中文字幕一区av| 黑人巨大精品欧美黑白配亚洲| 欧美综合在线视频| 国产精品国产三级国产aⅴ入口| 日韩福利视频网| 色综合色综合色综合色综合色综合| 欧美一个色资源| 亚洲自拍都市欧美小说| 成人av网站在线| 国产亚洲午夜高清国产拍精品| 亚洲mv大片欧洲mv大片精品| 色婷婷久久久综合中文字幕| 国产精品久久毛片av大全日韩| 精品一区二区久久| 欧美精品一卡二卡| 亚洲一二三级电影| 在线一区二区视频| 亚洲激情男女视频| 91免费观看视频在线| 中文成人av在线| 国产成人免费视频网站 | 黄网站免费久久| 91精品国产综合久久精品图片| 一二三四区精品视频| 色中色一区二区| 亚洲欧美区自拍先锋| 99re这里都是精品| 亚洲免费观看视频| 欧美天天综合网| 亚洲一区二区三区美女| 欧洲av在线精品| 五月天精品一区二区三区| 欧美年轻男男videosbes| 日韩福利视频导航| 欧美一级久久久| 精品一区二区三区av| 国产午夜精品美女毛片视频| 成人午夜av在线| 亚洲欧美日韩人成在线播放| 日本电影亚洲天堂一区| 亚洲成人精品在线观看| 日韩女优av电影| 国产高清亚洲一区| 亚洲婷婷综合久久一本伊一区| 色综合久久综合网欧美综合网| 亚洲成人激情自拍| 2023国产精品视频| 不卡的看片网站| 五月天久久比比资源色| 精品乱人伦小说| 成+人+亚洲+综合天堂| 亚洲综合免费观看高清完整版 | 成人国产视频在线观看| 亚洲男女毛片无遮挡| 欧美精品tushy高清| 国内外精品视频| 亚洲欧美欧美一区二区三区| 51精品秘密在线观看| 国产一区二区三区电影在线观看| 亚洲丝袜自拍清纯另类| 91精品中文字幕一区二区三区| 国产成人av资源| 亚洲h在线观看| 国产精品美女久久久久aⅴ| 欧美性大战久久久久久久| 国产在线播放一区三区四| 亚洲综合自拍偷拍| 久久亚洲精品小早川怜子| 91美女在线观看| 国产一区二区美女诱惑| 亚洲成av人片一区二区| 国产精品无圣光一区二区| 91精品国产色综合久久不卡蜜臀 | 亚洲免费三区一区二区| 精品国内二区三区| 欧美日韩亚洲高清一区二区| 岛国精品在线观看| 奇米777欧美一区二区| 亚洲精品大片www| 国产欧美日韩综合精品一区二区| 777a∨成人精品桃花网| 一本大道久久a久久精二百| 国产精品一区二区久激情瑜伽| 亚洲国产精品一区二区www在线| 国产精品视频线看| 久久久久99精品国产片| 91麻豆精品国产自产在线观看一区| 91视频你懂的| eeuss国产一区二区三区| 精品一区二区影视| 日韩成人免费电影| 亚洲在线免费播放| 亚洲人成网站影音先锋播放| 国产欧美一区二区精品忘忧草 | 色美美综合视频| 成人一区二区三区视频在线观看| 久久国产剧场电影| 精品一区二区免费在线观看| 婷婷夜色潮精品综合在线| 亚洲大型综合色站| 亚洲午夜免费电影| 亚洲在线观看免费| 亚洲精品伦理在线| 亚洲女与黑人做爰| 亚洲综合视频网| 亚洲成av人综合在线观看| 亚洲国产精品综合小说图片区| 亚洲一区二区三区四区的| 亚洲综合偷拍欧美一区色| 亚洲激情六月丁香| 亚洲成人av免费| 蜜臀99久久精品久久久久久软件| 免费的成人av| 精品亚洲成av人在线观看| 国产精品夜夜爽| 99在线视频精品| 99久久精品国产网站| 91久久免费观看| 欧美疯狂做受xxxx富婆| 欧美一区二区日韩| 久久日一线二线三线suv| 中文成人av在线| 亚洲自拍偷拍综合| 美女视频免费一区| 福利电影一区二区三区| 色婷婷亚洲婷婷| 日韩视频一区二区在线观看| 国产午夜精品理论片a级大结局| 国产精品免费看片| 亚洲图片欧美一区| 国产真实精品久久二三区| 99精品欧美一区| 91精品国产乱| 中文字幕不卡在线观看| 一区二区三区国产精华| 久久精品免费看| 91捆绑美女网站| 日韩欧美一区二区三区在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美放荡的少妇| 久久精品视频免费| 亚洲综合无码一区二区| 麻豆免费看一区二区三区| 丰满岳乱妇一区二区三区| 91精品福利视频| 日本一区二区三区在线观看| 午夜伦理一区二区| 国产99一区视频免费| 欧美日韩国产高清一区二区三区| www国产精品av| 偷窥国产亚洲免费视频| 成人激情图片网| 欧美成人一区二区| 亚洲午夜久久久久久久久电影网| 国产91色综合久久免费分享| 7777精品伊人久久久大香线蕉超级流畅 | 久久精品国产亚洲aⅴ|