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)
he he, muito bom cara...
ate mais
bem legal kra, parabêns!
Sempre arrebentando nas tools,
Ponto Positivo!!!
Muito bom cara
Parabens!
[]'s
[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
Vc postaria o código fonte?
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
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.
Ae OnlyOne vlw pelo código é bom pra da umas estudada

^.-
Realmente da pra dar uma sacada legal sobre o código, esse também foi no D7? Pergunto pq uso mais o D6
sim , feito no Delphi 7