FORUM DARKERS

Administração => Darkers Project => Topic started by: OnlyOne on 10 de September , 2006, 06:42:11 PM

Title: Lady Night - FTP Client
Post by: OnlyOne on 10 de September , 2006, 06:42:11 PM
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

(//http://i65.photobucket.com/albums/h226/mmmx2/ftp.jpg)

link pra download :

http://rapidshare.de/files/32668139/FTP.zip.html (http://rapidshare.de/files/32668139/FTP.zip.html)
Title: Re: Lady Night - FTP Client
Post by: insanity on 10 de September , 2006, 06:57:39 PM
he he, muito bom cara...


ate mais
Title: Re: Lady Night - FTP Client
Post by: rodweb on 11 de September , 2006, 01:35:52 PM
bem legal kra, parabêns!
Title: Re: Lady Night - FTP Client
Post by: Ðark$pawn on 11 de September , 2006, 06:13:03 PM
Sempre arrebentando nas tools, Ponto Positivo!!! ;)
Title: Re: Lady Night - FTP Client
Post by: J.spY on 11 de September , 2006, 06:20:14 PM
Muito bom  cara

Parabens!

[]'s
Title: Re: Lady Night - FTP Client
Post by: whit3_sh4rk on 11 de September , 2006, 06:50:29 PM
[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
Title: Re: Lady Night - FTP Client
Post by: tiaguito-.- on 11 de September , 2006, 09:52:33 PM
Vc postaria o código fonte?
Title: Re: Lady Night - FTP Client
Post by: OnlyOne on 11 de September , 2006, 10:41:20 PM
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
Title: Re: Lady Night - FTP Client
Post by: OnlyOne on 12 de September , 2006, 10:48:34 AM
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.


Title: Re: Lady Night - FTP Client
Post by: tiaguito-.- on 12 de September , 2006, 02:32:02 PM
Ae OnlyOne vlw pelo código é bom pra da umas estudada  ;D


^.-
Title: Re: Lady Night - FTP Client
Post by: Anonymous on 16 de March , 2007, 09:33:38 AM
Realmente da pra dar uma sacada legal sobre o código, esse também foi no D7? Pergunto pq uso mais o D6 :)
Title: Re: Lady Night - FTP Client
Post by: OnlyOne on 16 de March , 2007, 03:45:29 PM
sim , feito no Delphi 7