Lady Night - FTP Client

Started by OnlyOne, 10 de September , 2006, 06:42:11 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

OnlyOne

hello

to trazendo a vcs o meu cliente de ftp , Lady Night , com todas as operaçoes basicas , comer , cagar , fuder ,  ops !!!!!!! , nao sao essas operaçoes , digo , upload , download , criar pasta , renomear , apagar , etc .....

dentro em breve ponho um tutorial ensinando a lidar com FTP no Delphi



link pra download :

http://rapidshare.de/files/32668139/FTP.zip.html
No céu toca Joy Division


insanity


rodweb


Ðark$pawn

Sempre arrebentando nas tools, Ponto Positivo!!! ;)

J.spY


"...É melhor ficar calado deixando que todos pensem que você é um idiota, do que abrir a boca e não deixar a menor dúvida®..."

whit3_sh4rk

[OnlyOne]
Parabéns cara.. eu acho que não sei fazer mais nada de útil no delphi.. Já estou sem abri-lo faz 2 meses e pouco.. Enquanto eu estou parado, você está cada vez mais estudando, continue assim..
Era pra essa tool que você queria selecionar vários itens? Eu tinha dado uma lida lá do trampo.. Conseguiu?

[]s

tiaguito-.-

Não tenho medo do escuro, nem do que tem nele, medo do escuro é pra fracos, e vc é um?
Meu MSN ta ali, se quiser add, add mais nun fala bosta não =P

OnlyOne

era pra esse programa sim tubarao , em breve eu coloco aqui os fontes e um tutorial a respeito , agradeço a todos pela atençao

OnlyOne
No céu toca Joy Division


OnlyOne

olha ai o codigo


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, ExtCtrls, XPMan, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdFTP, ComCtrls, IdAntiFreezeBase,
  IdAntiFreeze, FileCtrl;


// Classes ********************************************************************/

type
  Tj = class(TForm)
    menu: TMainMenu;
    m1: TMenuItem;
    m2: TMenuItem;
    m3: TMenuItem;
    box1: TGroupBox;
    host: TLabeledEdit;
    porta: TLabeledEdit;
    login: TLabeledEdit;
    senha: TLabeledEdit;
    xp: TXPManifest;
    ftp: TIdFTP;
    status: TStatusBar;
    box2: TGroupBox;
    box3: TGroupBox;
    lista: TListBox;
    pop1: TPopupMenu;
    p1: TMenuItem;
    p2: TMenuItem;
    p3: TMenuItem;
    p4: TMenuItem;
    p5: TMenuItem;
    p6: TMenuItem;
    salvar: TSaveDialog;
    p7: TMenuItem;
    drive: TDriveComboBox;
    pasta: TDirectoryListBox;
    arq: TFileListBox;
    pop2: TPopupMenu;
    up: TMenuItem;
    anti: TIdAntiFreeze;
    lab: TLabel;

procedure m2Click(Sender: TObject);
procedure m3Click(Sender: TObject);
procedure ftpConnected(Sender: TObject);
procedure ftpDisconnected(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure p1Click(Sender: TObject);
procedure p2Click(Sender: TObject);
procedure p3Click(Sender: TObject);
procedure p4Click(Sender: TObject);
procedure p5Click(Sender: TObject);
procedure p6Click(Sender: TObject);
procedure p7Click(Sender: TObject);
procedure upClick(Sender: TObject);
procedure listar();

end;


type Thread1 = class(TThread)

protected procedure Execute; override;

end;


type Thread2 = class(TThread)

protected procedure Execute; override;

end;


type Thread3 = class(TThread)

protected procedure Execute; override;

end;


type Thread4 = class(TThread)

protected procedure Execute; override;

end;


type Thread5 = class(TThread)

protected procedure Execute; override;

end;


type Thread6 = class(TThread)

protected procedure Execute; override;

end;


type Thread7 = class(TThread)

protected procedure Execute; override;

end;


type Thread8 = class(TThread)

protected procedure Execute; override;

end;


type Thread9 = class(TThread)

protected procedure Execute; override;

end;

// Variaveis ******************************************************************/

var
  j: Tj;
  t1 : Thread1;
  t2 : Thread2;
  t3 : Thread3;
  t4 : Thread4;
  t5 : Thread5;
  t6 : Thread6;
  t7 : Thread7;
  t8 : Thread8;
  t9 : Thread9;

// Metodos ********************************************************************/ 

implementation

{$R *.dfm}


//funçao da thread 1 - conectar * * * * * * * * * * * * * * * * * * * * * * * */
procedure Thread1.Execute();
begin

try

j.ftp.Host := j.host.Text; //host
j.ftp.Port := StrToInt(j.porta.Text); //porta
j.ftp.Username := j.login.Text; //login
j.ftp.Password := j.senha.Text; //senha

j.ftp.Connect(true); //faz conexao e login

j.listar(); //lista os arquivos remotos

except
     j.status.Panels[0].Text := 'T1 : Erro de conexão';
     Exit;
     end;

end; //end of Thread1.Execute




//funçao da thread 2 - download de arquivo * * * * * * * * * * * * * * * * * * /
procedure Thread2.Execute();

var s : String;

begin

try

s := j.lista.Items.Strings[j.lista.ItemIndex]; //pega o nome nalista

j.salvar.FileName := s; //determina o nome
 j.salvar.Execute; //executa dialogo

j.status.Panels[0].Text := 'Salvando arquivo : ' + s + ' ...';

 j.ftp.Get(s,j.salvar.FileName,false,false); //faz download

  j.status.Panels[0].Text := 'Arquivo : ' + s + ' salvo com sucesso';

except
     j.status.Panels[0].Text := 'T2 : Erro ao fazer download';
     Exit;
     end;

end; //end of Thread2.Execute




//funçao da thread 3 - criar uma pasta * * * * * * * * * * * * * * * * * * * * /
procedure Thread3.Execute();

var s : String;

begin

try

s := InputBox('Criar nova pasta', 'Nome', ''); //cria caixa de dialogo

if s <> '' then
 begin
 j.ftp.MakeDir(s); //cria pasta
 end;

j.listar(); //lista arquivos remotos

except
     j.status.Panels[0].Text := 'T3 : Erro ao criar pasta';
     Exit;
     end;

end; //end of Thread3.Execute




//funçao da thread 4 - explorar uma pasta * * * * * * * * * * * * * * * * * * */
procedure Thread4.Execute();
begin

try

j.ftp.ChangeDir(j.lista.Items.Strings[j.lista.ItemIndex]); //entra na pasta

j.listar(); //lista arquivos remotos

except
     j.status.Panels[0].Text := 'T4 : Selecione uma pasta';
     Exit;
     end;

end; //end of Thread4.Execute




//funcao da thread 5 - subir um nivel no ftp * * * * * * * * * * * * * * * * * /
procedure Thread5.Execute();
begin

try

j.ftp.ChangeDirUp; //sobe um nivel

j.listar(); //lista arquivos remotos

except
     j.status.Panels[0].Text := 'T5 : Erro na troca de diretório';
     Exit;
     end;

end; //end of Thread5.Execute




//funcao da thread 6 - renomear arquivo / pasta  no ftp * * * * * * * * * * * */
procedure Thread6.Execute();

var s : String;

begin

try

s := InputBox('Renomear', 'Nome', ''); //cria caixa de dialogo

if s <> '' then
 begin
 j.ftp.Rename(j.lista.Items.Strings[j.lista.ItemIndex],s); //renomeia
  j.listar(); //lista arquivos remotos
   end;

except
     j.status.Panels[0].Text := 'T6 : Erro ao renomear';
     Exit;
     end;


end; //end of Thread6.Execute




//funcao da thread 7 - apagar arquivo no ftp * * * * * * * * * * * * * * * * * /
procedure Thread7.Execute();

var n : String;
    i : Integer;

begin

try

for i := 0 to j.lista.Items.Count - 1 do //percorre a lisra de arquivos
 begin

  if j.lista.Selected[i] then  //se estiver selecionado
   begin
    n := j.lista.Items.Strings[i]; //pega nome do arquivo
     j.status.Panels[0].Text := 'Apagando arquivo : ' + n;
      j.ftp.Delete(n); //apaga arquivo
       end;

 end;//for

j.listar(); //lista arquivos remotos

j.status.Panels[0].Text := 'Processo realizado com sucesso';

except
     j.status.Panels[0].Text := 'T7 : Erro ao deletar arquivo(s)';
     Exit;
     end;

end; //end of Thread7.Execute





//funcao da thread 8 - apagar pasta no ftp * * * * * * * * * * * * * * * * * * /
procedure Thread8.Execute();
begin

try

j.ftp.RemoveDir(j.lista.Items.Strings[j.lista.ItemIndex]); //apaga pasta

j.status.Panels[0].Text := 'Diretório removido com sucesso';

j.listar(); //lista arquivos remotos

except
     j.status.Panels[0].Text := 'T8 : Erro ao deletar diretório';
     Exit;
     end;

end; //end of Thread8.Execute




//funcao da thread 9 - upload * * * * * * * * * * * * * * * * * * * * * * * * */
procedure Thread9.Execute();

var i : Integer;
    nome,path : String;

begin

try

for i := 0 to j.arq.Count - 1 do //percorre a lista
 begin

 if j.arq.Selected[i] then //se estiver selecionado
  begin
   path := j.arq.Directory; //pega o caminho da pasta
    nome := j.arq.Items.Strings[i]; //pega o nome do arquivo

     j.status.Panels[0].Text := 'Enviando arquivo : ' + nome;
       j.ftp.Put(path + '\' + nome,nome,false); //upload
        end;

 end;//for

j.listar(); //lista arquivos remotos

j.status.Panels[0].Text := 'Processo concluído com sucesso';

except
     j.status.Panels[0].Text := 'T9 : Erro ao enviar arquivo(s)';
     Exit;
     end;


end; //end of Thread9.Execute




//funçao do botao conectar * * * * * * * * * * * * * * * * * * * * * * * * * */
procedure Tj.m2Click(Sender: TObject);
begin

if ftp.Connected = true then
 begin
 ftp.Quit; //desconecta
 end;

t1 := Thread1.Create(false);

end; // end of Tj.m2Click




//quando estiver conectado * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.ftpConnected(Sender: TObject);
begin

//desabilita opçoes
host.Enabled := false;
porta.Enabled := false;
login.Enabled := false;
senha.Enabled := false;

j.status.Panels[0].Text := 'Conectado';

lista.PopupMenu := pop1; //ativa menu popup

end; //end of Tj.ftpConnected




//funçao do botao desconectar * * * * * * * * * * * * * * * * * * * * * * * * */
procedure Tj.m3Click(Sender: TObject);
begin

ftp.Quit; //desconecta

end; //end of Tj.m3Click




//quando estiver desconectado * * * * * * * * * * * * * * * * * * * * * * * * */
procedure Tj.ftpDisconnected(Sender: TObject);
begin

//habilita opçoes
host.Enabled := true;
porta.Enabled := true;
login.Enabled := true;
senha.Enabled := true;

lista.Clear; //limpa lista

j.status.Panels[0].Text := 'Desconectado';

lab.Caption := 'Diretório Atual : ';

lista.PopupMenu := nil;  //desabilita menu popup

end; // end of Tj.ftpDisconnected




//lista os arquivos remotos do ftp * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.listar();
begin

try

lista.Clear; //limpa lista

if ftp.Size(ftp.RetrieveCurrentDir) = 0 then
 begin
  Exit;
   end;

ftp.List(lista.Items,'',false); //obtem a lista de arquivos

lab.Caption := 'Diretório Atual : ' + ftp.RetrieveCurrentDir;

except
     status.Panels[0].Text := 'Erro ao listar arquivos';
     Exit;
     end;

end; // end of Tj.listar




//ao criar o form * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
procedure Tj.FormCreate(Sender: TObject);
begin

lista.PopupMenu := nil; //desabilita menu popup

Application.Title := 'Lady Night - by OnlyOne'; //titulo do programa

end; //end of Tj.FormCreate




//ao fechar o form * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.FormClose(Sender: TObject; var Action: TCloseAction);
begin

if ftp.Connected = true then
 begin
 ftp.Quit; //desconecta
 end;

end; //end of Tj.FormClose




//faz download de um arquivo * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.p1Click(Sender: TObject);
begin

t2 := Thread2.Create(false);

end; //end of Tj.p1Click




//cria uma pasta * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.p2Click(Sender: TObject);
begin

t3 := Thread3.Create(false);

end; //end of Tj.p2Click




//explora uma pasta remota * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.p3Click(Sender: TObject);
begin

t4 := Thread4.Create(false);

end; //end of Tj.p3Click



//sobe um nivel no ftp * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.p4Click(Sender: TObject);
begin

t5 := Thread5.Create(false);

end; //end of Tj.p4Click




//renomeia um arquivo / pasta * * * * ** * * * * * * * * * * * * * * * * * * * /
procedure Tj.p5Click(Sender: TObject);
begin

t6 := Thread6.Create(false);

end; //end of Tj.p5Click




//deleta arquivo / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.p6Click(Sender: TObject);
begin

t7 := Thread7.Create(false);

end; //end of Tj.p6Click




//deleta pasta * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.p7Click(Sender: TObject);
begin

t8 := Thread8.Create(false);

end; //end of Tj.p7Click




//upload * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
procedure Tj.upClick(Sender: TObject);
begin

t9 := Thread9.Create(false);

end; //end of Tj.upClick







end.


No céu toca Joy Division


tiaguito-.-

Ae OnlyOne vlw pelo código é bom pra da umas estudada  ;D


^.-
Não tenho medo do escuro, nem do que tem nele, medo do escuro é pra fracos, e vc é um?
Meu MSN ta ali, se quiser add, add mais nun fala bosta não =P

Anonymous

Realmente da pra dar uma sacada legal sobre o código, esse também foi no D7? Pergunto pq uso mais o D6 :)

OnlyOne

No céu toca Joy Division