掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TIdFTPについて (ID:15983)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
既製品に不満があって FTP転送ソフトほしかったので 今少し遊んだサンプルあげる。 固定転送なら簡単なので自分でつくりましょう。 Getも要領いっしょだから 自分でするか誰かに作ってもらうといいです unit MyftpUnit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP, ComCtrls, ShellCtrls, ExtCtrls; type TForm1 = class(TForm) Button_Connect: TButton; Button_Disconnect: TButton; CheckBox1: TCheckBox; Edit_Host: TEdit; Edit_Pass: TEdit; Edit_UserName: TEdit; FTPTensou: TButton; IdFTP1: TIdFTP; Label1: TLabel; Label2: TLabel; ListBox_FTP: TListBox; Memo1: TMemo; Panel1: TPanel; Panel2: TPanel; ShellListView1: TShellListView; Splitter1: TSplitter; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure IdFTP1Status(ASender: TObject; const AStatus: TIdStatus; const AStatusText: string); procedure IdFTP1Disconnected(Sender: TObject); procedure IdFTP1AfterClientLogin(Sender: TObject); procedure FTPTensouClick(Sender: TObject); procedure Button_DisconnectClick(Sender: TObject); procedure Button_ConnectClick(Sender: TObject); private { Private 宣言 } public { Public 宣言 } procedure FTPListUpdate(SList : TStrings); end; var Form1: TForm1; implementation {$R *.dfm} uses IdFTPCommon; procedure TForm1.Button_ConnectClick(Sender: TObject); begin // 接続 with IdFTP1 do begin Host := Edit_Host.Text; Username := Edit_UserName.Text; Password := Edit_Pass.Text; if Connected then Disconnect; try Connect; // 接続 FTPListUpdate(ListBox_FTP.Items); // ファイルリストの更新 // List(ListBox_FTP.Items, '*.*' , CheckBox1.Checked); // FTPのファイルリスト // // Trueだと 属性と日付も表示 // ChangeDir // フォルダ変更 // ChangeDirUp // 1階層上のフォルダへ移動 // CombineFiles // なんだろう? // Get // FTPからもらう // Put // FTPに転送 // MakeDir // FTPにフォルダ作成 // RemoveDir // フォルダ削除 // Rename // 名前変更 // RetrieveCurrentDir // FTPの現在のフォルダ名 except // エラー処理 end; end; end; procedure TForm1.Button_DisconnectClick(Sender: TObject); begin // 切断処理 // Quit with IdFTP1 do if Connected then Disconnect; // 切断 ListBox_FTP.Items.Clear; end; procedure TForm1.FTPListUpdate(SList: TStrings); begin // リストの更新 if Not(IdFTP1.Connected) then begin // 接続されていない。 ShowMessage('FTPに接続されていません。'); end else IdFTP1.List(SList , '*.*' , CheckBox1.Checked); // FTPのファイルリスト // Trueだと 属性と日付も表示 end; // FTPへ転送 procedure TForm1.FTPTensouClick(Sender: TObject); var i:integer; FullFileName_FTP, FullFileName_MyPC : string; begin if Not(IdFTP1.Connected) then begin // 接続されていない。 ShowMessage('FTPに接続されていません。'); Exit; end; for i:= 0 to ShellListView1.Items.Count -1 do if ShellListView1.Items[i].Selected then begin with IdFTP1 do begin // Putに直接いれていいけど、混乱するといけないのでここで代入。 FullFileName_FTP := ShellListView1.Folders[i].DisplayName; FullFileName_MyPC := ShellListView1.RootFolder.PathName +ShellListView1.Folders[i].DisplayName; // 転送モード指定 TransferType := ftBinary; // ftBinary ヘルプではどこにあるかわからないので // エクスプローラーでsource\Indy10を検索するといい // IdFTPCommon.pas にあるのがわかるので usesに追加する // 転送 Put(FullFileName_MyPC, FullFileName_FTP ,False); // FTPに転送 // Indicates content should be appended to 存在するdataに. // 既定値: false end; end; FTPListUpdate(ListBox_FTP.Items); end; procedure TForm1.IdFTP1AfterClientLogin(Sender: TObject); begin Memo1.Lines.Add( TIdFTP(Sender).Host + #13#10 + TIdFTP(Sender).Username + #13#10 + 'でログインしました。' + #13#10 + '現在のフォルダは '+TIdFTP(Sender).RetrieveCurrentDir+' です' ); Memo1.Lines.Add(TIdFTP(Sender).LoginMsg.Text.Text); Memo1.Lines.Add(TIdFTP(Sender).ListResult.Text); end; procedure TForm1.IdFTP1Disconnected(Sender: TObject); begin Memo1.Lines.Add( '切断しました:' + TIdFTP(Sender).Host ); end; procedure TForm1.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus; const AStatusText: string); begin Memo1.Lines.Add(AStatusText); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin with IdFTP1 do if Connected then Disconnect; // 切断 end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.