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

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

?? mainf.pas

?? 可以幫助大家詳細了解FTP編程 本站提供FTP開發實例免費下載
?? PAS
字號:
{***************************************************************
 *
 * Project  : FTPDemo
 * Unit Name: mainf
 * Purpose  : This demo demonstrates the use of IdFTP and IdDebugLog components
 *  : supports both UNIX and DOS directory listings
 * Version  : 1.0
 * Date  : Wed 25 Apr 2001  -  01:15:09
 * Author  : Doychin Bondzhev <doichin@5group.com>
 * History  :
 * Tested  : Wed 25 Apr 2001  // Allen O'Neill <allen_oneill@hotmail.com>
 *
 ****************************************************************}


unit mainf;

interface

uses
  {$IFDEF Linux}
  QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls, QComCtrls, QMenus, QTypes,
  {$ELSE}
  windows, messages, graphics, controls, forms, dialogs, stdctrls, extctrls, comctrls,
  menus,
  {$ENDIF}
  SysUtils, Classes, IdIntercept, IdLogBase, IdLogDebug, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdFTP,
  IdAntiFreezeBase, IdAntiFreeze;

type
  TMainForm = class(TForm)
  DirectoryListBox: TListBox;
  IdFTP1: TIdFTP;
  IdLogDebug1: TIdLogDebug;
  DebugListBox: TListBox;
  Panel1: TPanel;
  FtpServerEdit: TEdit;
  ConnectButton: TButton;
  Splitter1: TSplitter;
  Label1: TLabel;
  UploadOpenDialog1: TOpenDialog;
  Panel3: TPanel;
  SaveDialog1: TSaveDialog;
  StatusBar1: TStatusBar;
  TraceCheckBox: TCheckBox;
  CommandPanel: TPanel;
  UploadButton: TButton;
  AbortButton: TButton;
  BackButton: TButton;
  DeleteButton: TButton;
  DownloadButton: TButton;
  UserIDEdit: TEdit;
  PasswordEdit: TEdit;
  Label2: TLabel;
  Label3: TLabel;
  IdAntiFreeze1: TIdAntiFreeze;
  ProgressBar1: TProgressBar;
  UsePassive: TCheckBox;
  CurrentDirEdit: TEdit;
  ChDirButton: TButton;
  CreateDirButton: TButton;
  PopupMenu1: TPopupMenu;
  Download1: TMenuItem;
  Upload1: TMenuItem;
  Delete1: TMenuItem;
  N1: TMenuItem;
  Back1: TMenuItem;
  procedure ConnectButtonClick(Sender: TObject);
  procedure IdLogDebug1LogItem(ASender: TComponent; var AText: String);
  procedure UploadButtonClick(Sender: TObject);
  procedure DirectoryListBoxDblClick(Sender: TObject);
  procedure DeleteButtonClick(Sender: TObject);
  procedure IdFTP1Disconnected(Sender: TObject);
  procedure AbortButtonClick(Sender: TObject);
  procedure BackButtonClick(Sender: TObject);
  procedure IdFTP1Status(axSender: TObject; const axStatus: TIdStatus;
  const asStatusText: String);
  procedure TraceCheckBoxClick(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  procedure DirectoryListBoxClick(Sender: TObject);
  procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
  procedure IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
  procedure IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
  procedure UsePassiveClick(Sender: TObject);
  procedure ChDirButtonClick(Sender: TObject);
  procedure CreateDirButtonClick(Sender: TObject);
  private
  { Private declarations }
  AbortTransfer: Boolean;
  TransferrignData: Boolean;
  BytesToTransfer: LongWord;
  STime: TDateTime;
  procedure ChageDir(DirName: String);
  procedure SetFunctionButtons(AValue: Boolean);
  procedure SaveFTPHostInfo(Datatext, header: String);
  function GetHostInfo(header: String): String;
  public
  { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}

Uses
  IniFiles;

Var
  AverageSpeed: Double = 0;

procedure TMainForm.SetFunctionButtons(AValue: Boolean);
Var
  i: Integer;
begin
  with CommandPanel do
  for i := 0 to ControlCount - 1 do
  if Controls[i].Name <> 'AbortButton' then Controls[i].Enabled := AValue;

  with PopupMenu1 do
  for i := 0 to Items.Count - 1 do Items[i].Enabled := AValue;

  ChDirButton.Enabled := AValue;
  CreateDirButton.Enabled := AValue;
end;

procedure TMainForm.ConnectButtonClick(Sender: TObject);
begin
  ConnectButton.Enabled := false;
  if IdFTP1.Connected then try
  if TransferrignData then IdFTP1.Abort;
  IdFTP1.Quit;
  finally
  //Panel3.Caption := 'Current directory is: ';
  CurrentDirEdit.Text := '/';
  DirectoryListBox.Items.Clear;
  SetFunctionButtons(false);
  ConnectButton.Caption := 'Connect';
  ConnectButton.Enabled := true;
  ConnectButton.Default := true;
  end
  else with IdFTP1 do try
  User := UserIDEdit.Text;
  Password := PasswordEdit.Text;
  Host := FtpServerEdit.Text;
  Connect;
  Self.ChageDir(CurrentDirEdit.Text);
  SetFunctionButtons(true);
  SaveFTPHostInfo(FtpServerEdit.Text, 'FTPHOST');
  finally
  ConnectButton.Enabled := true;
  if Connected then begin
  ConnectButton.Caption := 'Disconnect';
  ConnectButton.Default := false;
  end;
  end;
end;

procedure TMainForm.IdLogDebug1LogItem(ASender: TComponent;
  var AText: String);
begin
  DebugListBox.ItemIndex := DebugListBox.Items.Add(AText);
end;

procedure TMainForm.UploadButtonClick(Sender: TObject);
begin
  if IdFTP1.Connected then begin
  if UploadOpenDialog1.Execute then try
  SetFunctionButtons(false);
  IdFTP1.TransferType := ftBinary;
  
  IdFTP1.Put(UploadOpenDialog1.FileName, ExtractFileName(UploadOpenDialog1.FileName));
  ChageDir(idftp1.RetrieveCurrentDir);
  finally
  SetFunctionButtons(true);
  end;
  end;
end;

procedure TMainForm.ChageDir(DirName: String);
begin
  try
  SetFunctionButtons(false);
  IdFTP1.ChangeDir(DirName);
  IdFTP1.TransferType := ftASCII;

  CurrentDirEdit.Text := IdFTP1.RetrieveCurrentDir;

  {Panel3.Caption := 'Current directory is: ' + IdFTP1.RetrieveCurrentDir +
  '  Remote system is ' + IdFTP1.SystemDesc;}
  DirectoryListBox.Items.Clear;
  IdFTP1.List(DirectoryListBox.Items);
  finally
  SetFunctionButtons(true);
  end;
end;

function GetNameFromDirLine(Line: String; Var IsDirectory: Boolean): String;
Var
  i: Integer;
  DosListing: Boolean;
begin
  IsDirectory := Line[1] = 'd';
  DosListing := false;
  for i := 0 to 7 do begin
  if (i = 2) and not IsDirectory then begin
  IsDirectory := Copy(Line, 1, Pos(' ', Line) - 1) = '<DIR>';
  if not IsDirectory then
  DosListing := Line[1] in ['0'..'9']
  else DosListing := true;
  end;
  Delete(Line, 1, Pos(' ', Line));
  While Line[1] = ' ' do Delete(Line, 1, 1);
  if DosListing and (i = 2) then break;
  end;
  Result := Line;
end;

procedure TMainForm.DirectoryListBoxDblClick(Sender: TObject);
Var
  Name, Line: String;
  IsDirectory: Boolean;
begin
  if not IdFTP1.Connected then exit;
  Line := DirectoryListBox.Items[DirectoryListBox.ItemIndex];
  Name := GetNameFromDirLine(Line, IsDirectory);
  if IsDirectory then begin
  // Change directory
  SetFunctionButtons(false);
  ChageDir(Name);
  SetFunctionButtons(true);
  end
  else begin
  try
  SaveDialog1.FileName := Name;
  if SaveDialog1.Execute then begin
  SetFunctionButtons(false);
  IdFTP1.TransferType := ftBinary;
  BytesToTransfer := IdFTP1.Size(Name);
  IdFTP1.Get(Name, SaveDialog1.FileName, true);
  end;
  finally
  SetFunctionButtons(true);
  end;
  end;
end;

procedure TMainForm.DeleteButtonClick(Sender: TObject);
Var
  Name, Line: String;
  IsDirectory: Boolean;
begin
  if not IdFTP1.Connected then exit;
  Line := DirectoryListBox.Items[DirectoryListBox.ItemIndex];
  Name := GetNameFromDirLine(Line, IsDirectory);
  if IsDirectory then try
  SetFunctionButtons(false);
  idftp1.RemoveDir(Name);
  ChageDir(idftp1.RetrieveCurrentDir);
  finally
  end
  else
  try
  SetFunctionButtons(false);
  idftp1.Delete(Name);
  ChageDir(idftp1.RetrieveCurrentDir);
  finally
  end;
end;

procedure TMainForm.IdFTP1Disconnected(Sender: TObject);
begin
  StatusBar1.Panels[1].Text := 'Disconnected.';
end;

procedure TMainForm.AbortButtonClick(Sender: TObject);
begin
  AbortTransfer := true;
end;

procedure TMainForm.BackButtonClick(Sender: TObject);
begin
  if not IdFTP1.Connected then exit;
  try
  ChageDir('..');
  finally end;
end;

procedure TMainForm.IdFTP1Status(axSender: TObject; const axStatus: TIdStatus;
  const asStatusText: String);
begin
  DebugListBox.ItemIndex := DebugListBox.Items.Add(asStatusText);
  StatusBar1.Panels[1].Text := asStatusText;
end;

procedure TMainForm.TraceCheckBoxClick(Sender: TObject);
begin
  IdLogDebug1.Active := TraceCheckBox.Checked;
  DebugListBox.Visible := TraceCheckBox.Checked;
  if DebugListBox.Visible then Splitter1.Top := DebugListBox.Top + 5;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  SetFunctionButtons(false);
  IdLogDebug1.Active := true;

  FtpServerEdit.Text := GetHostInfo('FTPHOST');

  ProgressBar1.Parent := StatusBar1;
  ProgressBar1.Top := 2;
  ProgressBar1.Left := 1;
  {$IFDEF Linux}
  ProgressBar1.Width := 142;
  {$ENDIF}
end;

procedure TMainForm.DirectoryListBoxClick(Sender: TObject);
Var
  Line: String;
  IsDirectory: Boolean;
begin
  if not IdFTP1.Connected then exit;
  Line := DirectoryListBox.Items[DirectoryListBox.ItemIndex];
  GetNameFromDirLine(Line, IsDirectory);
  if IsDirectory then DownloadButton.Caption := 'Change dir'
  else DownloadButton.Caption := 'Download';
end;

procedure TMainForm.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
begin
  TotalTime :=  Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime := Sec + MS / 1000;
  if DLTime > 0 then
  AverageSpeed := {(AverageSpeed + }(AWorkCount / 1024) / DLTime{) / 2};

  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
  wmRead: StatusBar1.Panels[1].Text := 'Download speed ' + S;
  wmWrite: StatusBar1.Panels[1].Text := 'Uploade speed ' + S;
  end;

  if AbortTransfer then IdFTP1.Abort;

  ProgressBar1.Position := AWorkCount;
  AbortTransfer := false;
end;

procedure TMainForm.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  TransferrignData := true;
  AbortButton.Visible := true;
  AbortTransfer := false;
  STime := Now;
  if AWorkCountMax > 0 then ProgressBar1.Max := AWorkCountMax
  else ProgressBar1.Max := BytesToTransfer;
  AverageSpeed := 0;
end;

procedure TMainForm.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  AbortButton.Visible := false;
  StatusBar1.Panels[1].Text := 'Transfer complete.';
  BytesToTransfer := 0;
  TransferrignData := false;
  ProgressBar1.Position := 0;
  AverageSpeed := 0;
end;

procedure TMainForm.UsePassiveClick(Sender: TObject);
begin
  IdFTP1.Passive := UsePassive.Checked;
end;

procedure TMainForm.ChDirButtonClick(Sender: TObject);
begin
  SetFunctionButtons(false);
  ChageDir(CurrentDirEdit.Text);
  SetFunctionButtons(true);
end;

procedure TMainForm.CreateDirButtonClick(Sender: TObject);
Var
  S: String;
begin
  S := InputBox('Make new directory', 'Name', '');
  if S <> '' then
  try
  SetFunctionButtons(false);
  IdFTP1.MakeDir(S);
  ChageDir(CurrentDirEdit.Text);
  finally
  SetFunctionButtons(true);
  end;
end;

procedure TMainForm.SaveFTPHostInfo(Datatext, header: String);
var
  ServerIni: TIniFile;
begin
  ServerIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'FtpHost.ini');
  ServerIni.WriteString('Server', header, Datatext);
  ServerIni.UpdateFile;
  ServerIni.Free;
end;

function TMainForm.GetHostInfo(header: String): String;
var
  ServerName: String;
  ServerIni: TIniFile;
begin
  ServerIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'FtpHost.ini');
  ServerName := ServerIni.ReadString('Server', header, header);

  ServerIni.Free;
  result := ServerName;
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久九九九九| 中文字幕永久在线不卡| 欧美一级一区二区| 欧美一级在线视频| 91麻豆精品国产91久久久久| 欧美午夜电影一区| 日韩欧美一二三| 久久久久久毛片| 亚洲品质自拍视频网站| 亚洲一区二区三区四区五区中文 | 亚洲欧洲精品一区二区精品久久久| 中文字幕在线观看一区二区| 国产欧美日韩在线观看| 亚洲精品国产一区二区精华液 | 成人丝袜视频网| 97精品久久久久中文字幕| 欧洲亚洲国产日韩| 精品88久久久久88久久久| 136国产福利精品导航| 亚洲国产精品久久久男人的天堂| 日本在线不卡视频| 99久久婷婷国产综合精品电影| 欧美一区二视频| 国产精品久久看| 国产69精品久久久久毛片| 7777精品伊人久久久大香线蕉经典版下载| 欧美mv和日韩mv国产网站| 亚洲国产精品一区二区www在线| 久久成人18免费观看| 97精品久久久午夜一区二区三区| 日韩欧美国产一区二区三区 | 成人精品一区二区三区四区| 91精品国产综合久久婷婷香蕉| 中文字幕综合网| 不卡一二三区首页| 国产亚洲婷婷免费| 国产剧情一区在线| 久久久精品国产99久久精品芒果 | 国产日韩综合av| 蜜臀av性久久久久蜜臀av麻豆| 成人午夜精品一区二区三区| 久久亚区不卡日本| 久久国产日韩欧美精品| 4438x成人网最大色成网站| 日韩成人伦理电影在线观看| 欧美色成人综合| 三级久久三级久久| 日韩欧美美女一区二区三区| 免费成人性网站| 国产亚洲欧美一级| 色88888久久久久久影院按摩| 欧美经典一区二区三区| 成人精品小蝌蚪| 亚洲高清视频的网址| 91精品国产91久久综合桃花| 天天操天天色综合| 久久久国际精品| 在线观看91视频| 久久精品国产99国产| 国产精品乱人伦中文| 欧美日韩免费观看一区三区| 精品一区二区三区久久| 一区二区三区欧美在线观看| 正在播放一区二区| av在线播放一区二区三区| 日韩国产欧美一区二区三区| 国产欧美精品国产国产专区 | 一区二区三区四区激情| 91福利社在线观看| 国产成人亚洲精品青草天美| 午夜精品久久久久久久久久久| 国产精品欧美一级免费| 日韩精品在线一区二区| 欧美网站大全在线观看| 国产精品一级在线| 视频一区二区三区中文字幕| 亚洲婷婷在线视频| 中文文精品字幕一区二区| 在线综合亚洲欧美在线视频| 欧美在线三级电影| 欧洲精品一区二区| 91香蕉国产在线观看软件| 成人亚洲一区二区一| 国产一区二区三区四区五区美女| 亚洲电影一区二区| 亚洲精品日韩专区silk| 成人免费视频在线观看| 亚洲青青青在线视频| 亚洲摸摸操操av| 亚洲国产精品一区二区www在线| 亚洲男人的天堂在线aⅴ视频| 洋洋av久久久久久久一区| 亚洲第一综合色| 国产一区免费电影| 成人av网站在线观看免费| 99精品久久99久久久久| 欧美优质美女网站| 91麻豆精品国产| 国产日本欧洲亚洲| 亚洲精品一二三| 亚洲一区二区精品视频| 久久er精品视频| 91麻豆精品秘密| 日韩写真欧美这视频| 国产精品视频你懂的| 亚洲成在线观看| 粉嫩一区二区三区性色av| 欧美性淫爽ww久久久久无| 日韩欧美国产小视频| 亚洲综合丝袜美腿| 国产盗摄一区二区| 欧美一区二区三区免费视频| 亚洲人成在线观看一区二区| 青青草一区二区三区| 欧洲国内综合视频| 国产精品国产三级国产aⅴ中文| 天堂蜜桃一区二区三区| 韩国视频一区二区| 欧美一区午夜精品| 亚洲一区在线看| 日本高清成人免费播放| 国产三级精品三级在线专区| 麻豆精品一区二区三区| 欧美日韩精品一区视频| 亚洲成人综合在线| 色婷婷亚洲一区二区三区| 亚洲人快播电影网| 99久久er热在这里只有精品15| 亚洲国产精品高清| 不卡一区二区三区四区| 日韩久久一区二区| hitomi一区二区三区精品| 国产精品天干天干在线综合| 国产精品123区| 久久九九国产精品| 成人午夜av影视| 亚洲欧美日韩系列| 欧美视频精品在线| 日本在线不卡一区| 国产欧美久久久精品影院| 成人黄色在线网站| 亚洲精品中文在线| 日韩一级二级三级精品视频| 国产美女一区二区| 亚洲少妇中出一区| 日韩精品专区在线影院重磅| 国产精品91一区二区| 亚洲一区二区三区四区在线免费观看| 欧美羞羞免费网站| 国产91精品一区二区麻豆亚洲| 欧美国产97人人爽人人喊| 欧美色国产精品| 国产99精品国产| 亚洲精品国产无套在线观| 久久综合久色欧美综合狠狠| 不卡av免费在线观看| 精品一区二区三区欧美| 一区二区三区国产精华| 久久久国产精品麻豆| 欧美精品久久一区| 成人av一区二区三区| 麻豆精品一区二区三区| 亚洲一区二区影院| 1024国产精品| 国产精品久久久久影院色老大| 91麻豆精品91久久久久同性| 一本到高清视频免费精品| 国产精品66部| 懂色av一区二区三区蜜臀| 美女视频一区二区| 日韩1区2区日韩1区2区| 亚洲18色成人| 亚洲免费观看高清完整版在线| 久久久综合九色合综国产精品| 日韩一本二本av| 日韩亚洲电影在线| 久久中文娱乐网| 国产亚洲精品aa午夜观看| 久久久久久久av麻豆果冻| 国产免费成人在线视频| 中文字幕中文乱码欧美一区二区| 欧美激情一区三区| 国产精品免费aⅴ片在线观看| 国产亚洲精品久| 亚洲人精品午夜| 亚洲成人午夜影院| 国产精品资源在线| 91视频com| 欧美一区日韩一区| 中文字幕视频一区二区三区久| 亚洲午夜在线视频| 国产一区二区电影| 色综合久久66| 91麻豆精品国产自产在线观看一区| 555www色欧美视频| 中文av字幕一区| 日精品一区二区三区| 成人动漫av在线| 精品少妇一区二区三区视频免付费| 中文久久乱码一区二区|