Ir para conteúdo
Fórum Script Brasil
  • 0

preciso de ajuda com ftp


aalessandre

Pergunta

pessoal, tenho um codigo que envia arquivos por ftp, o problema é que quando começa a transferencia, a aplicação trava, e só destrava quando termina a transferencia, o que eu posso fazer para a aplicação não travar, eu quero deixar uma opção do usuario poder cancelar o envio dos arquivos.

** estou usando componentes indy, já coloquei no form um IdAntiFreeze, mas não resolveu nada.

segue o codigo q faz o envio

//enviando os arquivos
    try
      for i := 0 to FileListBox1.Count - 1 do
      begin
        if FileListBox1.Selected[i] then
        begin
          IdFTP1.Put(FileListBox1.Items.Strings[i],
                    FileListBox1.Items.Strings[i], false);
          remoteDir.Clear;
          remoteFile.Clear;
          IdFTP1.List;
        end;
        Gauge1.Progress := 0;
      end;
    except
    on e:Exception do
      ShowMessage(e.Message);
    end;

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
tenho um codigo que envia arquivos por ftp, o problema é que quando começa a transferencia, a aplicação trava, e só destrava quando termina a transferencia, o que eu posso fazer para a aplicação não travar, eu quero deixar uma opção do usuario poder cancelar o envio dos arquivos.

aalessandre ... na verdade a aplicação não trava. A transferência de arquivos ocupa 100% do processamento, dando a impressão que a aplicação travou.... por isso voce mencionou ( e só destrava quando termina a transferencia ) porque neste ponto já não é mais usado os 100% de processamento e voce então pode executar outro procedimento.

( eu quero deixar uma opção do usuario poder cancelar o envio dos arquivos. )

neste caso antes de iniciar o processo, voce tem que enviar o foco para um botão cancelar, e processar o controle.

exemplo:

Defina uma variavel boleana no public

private
    { Private declarations }
  public
    { Public declarations }
    cancelar : boolean;
  end;
dentro da sua rotina de repetição ( For ) voce coloca o controle
//enviando os arquivos
    try
      for i := 0 to FileListBox1.Count - 1 do
      begin
       
        Application.ProcessMessages;
        if Cancelar then
           begin
              Break;
              exit;
           end;
        sleep(100); // use e aumente o tempo se necessário
       
       if FileListBox1.Selected[i] then
        begin
          IdFTP1.Put(FileListBox1.Items.Strings[i],
                    FileListBox1.Items.Strings[i], false);
          remoteDir.Clear;
          remoteFile.Clear;
          IdFTP1.List;
        end;
        Gauge1.Progress := 0;
      end;
    except
    on e:Exception do
      ShowMessage(e.Message);
    end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...