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

(Resolvido)Tamanho do arquivo no FTP!


Douglas Soares

Pergunta

Boa tarde, uso o Indy 9 no delphi 7 e gostaria de saber como pegar o tamanho de um arquivo, já tentei IdFtp.Size('nomedoarquivo') e não da certo...

por favor me deem uma luz!

Abraços

Editado por Douglas_Soares
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde, uso o Indy 9 no delphi 7 e gostaria de saber como pegar o tamanho de um arquivo, já tentei IdFtp.Size('nomedoarquivo') e não da certo...

Exemplo usando o componente NMHTTP

procedure TFBdi.NMHTTP1PacketRecvd(Sender: TObject);
var   State: TResource;
begin
   If NMHTTP1.BytesTotal = 4040 then
      begin
         showmessage('Arquivo Não Encontrado');
         exit;
      end;
   QProgressBar1.maximum := NMHTTP1.BytesTotal;  // total de bytes do arquivo
   QProgressBar1.position := NMHTTP1.BytesRecvd;   // total de bytes recebidos durante o download
   StatusBar1.SimpleText := '  Download >> ' + IntToStr(NMHTTP1.BytesRecvd)+' de '+IntToStr(NMHTTP1.BytesTotal)+' Bytes recebidos';

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Não existe essa paleta no meu delphi , tem como me passar o link do componente? ou então me passar um exemplo com IdFTP...

Exemplo : Progresso da transferencia de arquivos com idftp

http://www.planetadelphi.com.br/dica/5776/...uivos-com-idftp

OBS: Faça as modificações necessárias para o seu uso

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Não dá certo...

Eu estou exibindo os arquivos do meu FTP, esses arquivos estão em 3 pastas...

'/downloads/arquivos/ + cdsparam.Codigo_I.text + /' ou '/downloads/arquivos/ + cdsparam.Codigo_I.text + /SEC' ou '/downloads/arquivos/ + cdsparam.Codigo_I.text + /TES'

eu jogo pra 3 string list e dps pra um listbox... bobera minha.... tentei fazer com um listbox sem as stringlists mas tava sobrepondo... pelo menos ta funcionando, asuuhasuhasuh....

consigo exibir todos os valores que preciso menos o tamanho do arquivo... da uma olhada no código, a parte que tento ler o tamanho ta la na penultima linha...

cdsBackupstamanho.AsInteger := IdFTP1.Size(ListBox1.Items.Strings);

procedure TfrmGerenciaBackups.btn_backupsClick(Sender: TObject);
var
i, tipo : integer;
ano, dia, mes : string;
list1, list2, list3 : TStringList;
bytesToTransfer: integer;
begin
list1 := TStringList.Create;
list2 := TStringList.Create;
list3 := TStringList.Create;

  if (idftp1.Size(cdsParamCODIGO_I.AsString) < 0) then
  begin

  //TOTAL
  try
  IdFTP1.ChangeDir('/' + cdsParamCODIGO_I.AsString);
  IdFTP1.List(list1, '*.zip', false);
  except
  Abort;
  end;

  //SEC
  try
  IdFTP1.ChangeDir('/' + cdsParamCODIGO_I.AsString + '/SEC');
  IdFTP1.List(list2, '*.zip', false);
  except
  end;

  //TES
  try

  IdFTP1.ChangeDir('/' + cdsParamCODIGO_I.AsString + '/TES');
  IdFTP1.List(list3, '*.zip', false);
  except
  end;

  end;

  ListBox1.Items.AddStrings(list1);
  ListBox1.Items.AddStrings(list2);
  ListBox1.Items.AddStrings(list3);

cdsBackups.Open;
for i := 0 to ListBox1.Items.Count - 1 do
begin
cdsBackups.Append;
cdsBackupsnome.Text := tira_extensao(ListBox1.Items[i]);

if copy(cdsBackupsnome.Text, 1, 4) = 'back' then
begin
cdsBackupstipo.Text := 'Total';
tipo := 0;
end;

if copy(cdsBackupsnome.Text, 1, 4) = 'sec_' then
begin
cdsBackupstipo.Text := 'Secretaria';
tipo := 1;
end;

if copy(cdsBackupsnome.Text, 1, 4) = 'tes_' then
begin
cdsBackupstipo.Text := 'Tesouraria';
tipo := 2;
end;

if tipo = 0 then
begin
ano := copy(cdsBackupsnome.Text, 7, 4);
mes := copy(cdsBackupsnome.Text, 11, 2);
dia := copy(cdsBackupsnome.Text, 13, 2);
end;

if tipo = 1 then
begin
ano := copy(cdsBackupsnome.Text, 11, 4);
mes := copy(cdsBackupsnome.Text, 15, 2);
dia := copy(cdsBackupsnome.Text, 17, 2);
end;

if tipo = 2 then
begin
ano := copy(cdsBackupsnome.Text, 11, 4);
mes := copy(cdsBackupsnome.Text, 15, 2);
dia := copy(cdsBackupsnome.Text, 17, 2);
end;

cdsBackupsdata.AsDateTime := strtodate(dia + '/' + mes + '/' + ano);

cdsBackupstamanho.AsInteger := IdFTP1.Size(ListBox1.Items.Strings[i]);

cdsBackups.Post;
end;

end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Jhonas, como sempre você estava certo, testei o código em separado e funcionou...

Tentei adapta-lo de todas as formas ao meu código mas não deu muito certo... gostaria de uma ajudinha nisso, segue o código:

procedure TfrmGerenciaBackups.btn_backupsClick(Sender: TObject);
var
i, tipo : integer;
ano, dia, mes : string;
list1, list2, list3 : TStringList;
begin
list1 := TStringList.Create;
list2 := TStringList.Create;
list3 := TStringList.Create;

  if (idftp1.Size(cdsParamCODIGO_I.AsString) < 0) then
  begin

  //TOTAL
  try
  IdFTP1.ChangeDir('/' + cdsParamCODIGO_I.AsString);
  IdFTP1.List(list1, '*.zip', false);
  except
  Abort;
  end;

  //SEC
  try
  IdFTP1.ChangeDir('/' + cdsParamCODIGO_I.AsString + '/SEC');
  IdFTP1.List(list2, '*.zip', false);
  except
  end;

  //TES
  try

  IdFTP1.ChangeDir('/' + cdsParamCODIGO_I.AsString + '/TES');
  IdFTP1.List(list3, '*.zip', false);
  except
  end;

  end;

  ListBox1.Items.AddStrings(list1);
  ListBox1.Items.AddStrings(list2);
  ListBox1.Items.AddStrings(list3);

cdsBackups.Open;
for i := 0 to ListBox1.Items.Count - 1 do
begin
cdsBackups.Append;
cdsBackupsnome.Text := tira_extensao(ListBox1.Items[i]);

if copy(cdsBackupsnome.Text, 1, 4) = 'back' then
begin
cdsBackupstipo.Text := 'Total';
tipo := 0;
end;

if copy(cdsBackupsnome.Text, 1, 4) = 'sec_' then
begin
cdsBackupstipo.Text := 'Secretaria';
tipo := 1;
end;

if copy(cdsBackupsnome.Text, 1, 4) = 'tes_' then
begin
cdsBackupstipo.Text := 'Tesouraria';
tipo := 2;
end;

if tipo = 0 then
begin
IdFTP1.ChangeDir('/');
IdFTP1.ChangeDir(cdsParamCODIGO_I.Text);

ano := copy(cdsBackupsnome.Text, 7, 4);
mes := copy(cdsBackupsnome.Text, 11, 2);
dia := copy(cdsBackupsnome.Text, 13, 2);
end;

if tipo = 1 then
begin
IdFTP1.ChangeDir('/');
IdFTP1.ChangeDir(cdsParamCODIGO_I.Text);
IdFTP1.ChangeDir('SEC');

ano := copy(cdsBackupsnome.Text, 11, 4);
mes := copy(cdsBackupsnome.Text, 15, 2);
dia := copy(cdsBackupsnome.Text, 17, 2);
end;

if tipo = 2 then
begin
IdFTP1.ChangeDir('/');
IdFTP1.ChangeDir(cdsParamCODIGO_I.Text);
IdFTP1.ChangeDir('TES');

ano := copy(cdsBackupsnome.Text, 11, 4);
mes := copy(cdsBackupsnome.Text, 15, 2);
dia := copy(cdsBackupsnome.Text, 17, 2);
end;

ListBox1.Selected[i] := true;
bytesToTransfer := IdFTP1.Size(ListBox1.Items.Strings[i]);
cdsBackupstamanho.AsInteger := bytesToTransfer;

cdsBackupsdata.AsDateTime := strtodate(dia + '/' + mes + '/' + ano);

cdsBackups.Post;
end;

end;

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, fiz tantos e tantos testes que cheguei a ponto de achar que era macumba... num funcionava de jeito nenhum... em um ato de desespero deletei o IdFTP e o readicionei, configurei, e fui testar... num é que o @#%¨&@%$ funcionou! o componente tava macumbado :blink: hasushausa

Abraços e obrigado por toda a ajuda prestada!

Link para o comentário
Compartilhar em outros sites

  • 0
num funcionava de jeito nenhum... em um ato de desespero deletei o IdFTP e o readicionei, configurei, e fui testar... num é que o @#%¨&@%$ funcionou!
Já tive alguns problemas parecidos ... por algum motivo que eu ainda não descobri, o componente fica com o código bichado, e o simples fato de deletá-lo e colocá-lo novamente resolve o problema

Abraços e obrigado por toda a ajuda prestada!

abraço e precisando é só escrever ...rs

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,5k
×
×
  • Criar Novo...