Advertisement
Guest User

Untitled

a guest
Mar 12th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.50 KB | None | 0 0
  1. function ConectaFTP(Host, UserName, Password : string): Boolean;
  2. var i: integer;
  3.     caminhototal , pasta : string;
  4.  
  5. begin
  6.    {===============================================================================
  7.       Componente FTP nao realiza a conexao em um ftp onde o host possui pastas
  8.            EX: ftp.brasiltelecom.com.br/httpdocs/clientes/update/scripts
  9.       A rotina considera que a primeira pasta antes da barra ( / ou \ ) é o host
  10.       as demais sao pastas onde sera usanda a funcao ftp.ChangeDir para entrar nos
  11.       diretorios
  12.    ===============================================================================}
  13.    caminhototal := Host;
  14.  
  15.    //=============== coloca se nao tiver a barra no final para controlar o final do host ================
  16.    if not(caminhototal[ Length(caminhototal) ]  In ['/','\'] ) then
  17.       caminhototal := caminhototal + '/';
  18.  
  19.     //=============== A primeira pasta antes da barra é considerada o hot de conexao ================
  20.    for i := 1 to Length(caminhototal) do
  21.    begin
  22.       if caminhototal[i] in ['\','/'] then
  23.       begin
  24.          caminhototal := Copy(caminhototal, i+1 , Length(caminhototal));
  25.          Break;
  26.       end
  27.       else
  28.          pasta := pasta + caminhototal[i];
  29.    end;
  30.  
  31.    ftp.Host  := pasta ;
  32.  
  33.     //===================== Se ja estiver conectado voltar para o diretorio Root do ftp =====================
  34.    if ftp.Connected then
  35.    begin
  36. {      pasta := ftp.RetrieveCurrentDir;
  37.       for i := 0 to Length(pasta) do
  38.       begin
  39.          if pasta[i] = '/' then
  40.             ftp.ChangeDirUp;
  41.  
  42.          temp := ftp.RetrieveCurrentDir;
  43.       end;
  44. }
  45.       ftp.Disconnect;
  46.    end;
  47.    sleep(1000);
  48.    if not ftp.Connected then
  49.    begin
  50.       ftp.Username := UserName;
  51.       ftp.Password := Password;
  52.       ftp.Host  := pasta ;
  53.  
  54.       try
  55.          ftp.Connect();
  56.          except
  57.             Result := False;
  58.             Exit;
  59.       end;
  60.    end;
  61.  
  62.    //=============== Se conectou verifica se tem subpastas para entrar  ================
  63.    pasta := '';
  64.    while caminhototal <> '' DO
  65.    begin
  66.       for i := 1 to Length(caminhototal) do
  67.       begin
  68.          if caminhototal[i] in ['\','/'] then
  69.          begin
  70.             caminhototal := Copy(caminhototal, i+1 , Length(caminhototal));
  71.             ftp.ChangeDir(pasta);
  72.             pasta := '';
  73.             Break;
  74.          end
  75.          else
  76.             pasta := pasta + caminhototal[i];
  77.       end;
  78.       Application.ProcessMessages;
  79.    end;
  80.  
  81.    Result := True;
  82. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement