Selecao DevMedia QUERO SER PRIME

Fórum ERRO AO COPIAR ARQS DO FTP #371150

10/06/2009

0

BOA TARDE,

TENHO UM SCRIPT QUE COPIA UNS ARQUIVOS DO FTP: mget TRAFEGO_POS_TO_12_200907*.gz

ESTOU PASSANDO A TAREFA PARA O DELPHI, POIS COM O SCRIPT O USUARIO PRECISA ALTERAR ALGUNS PARAMETROS TODO MES... E NO DELPHI EU PEGO ESSES PARAMETROS NO BANCO;

USANDO O INDY, LISTEI NUM STRINGLIST O NOME DOS ARQUIVOS, MAS TERIA QUE USAR O ASTERISTICO COMO NO USO NO SCRIPT:

arqs.Add(´TRAFEGO_POS_´+QR_FTP.FieldByName(´UF´).AsString+´_´+QR_FTP.FieldByName(´CICLO´).AsString+´_´+ANO_MES_CICLO+´*´+´.gz´);


PARA COPIAR:
for X := 0 to arqs.Count - 1 do
BEGIN
IdFTP1.get(´/DIR_FTP/´+arq [x],DIR_LOCAL\´+ arqs[x],true );
END;

MAS DA O ERRO:

First chance exception at $7C812A5B.
Exception class EFCreateError with message
´Cannot create file ´D:\Ernesto\Automatizacao_DFAT\Documentos_atuais
\TESTE_SCR_RD\TRAFEGO_POS_AC_12_200906*.gz´. A sintaxe do nome do arquivo,
pasta ou nome do volume está incorreta´. Process Project1.exe (2052)

TEM ALGUM JEITO DE USAR O * COM ESTE COMPONENTE ?


Etspaz

Etspaz

Responder

Posts

10/06/2009

Vmlima

Caro colega

Realmente não será possível utilizaro * para salvar seu arquivo.
Isso por que não se pode criar arquivo nomando-o com este simbolo.
Como se vc fosse alterar o nome de um arquivo qualquer para
por exemplo texto*.txt, este nome é inválido.

Tente usar o nome real do arquivo a ser copiado,

Att,
PS. terá realmente que colocar um nome valido para gravar


Responder

Gostei + 0

10/06/2009

Etspaz

Tente usar o nome real do arquivo a ser copiado


O PROBLEMA É QUE NÃO USO PARA GRAVAR, ELE COPIA COM O NOME ORIGINAL.
SÓ QUE USO PARA FILTRAR:

arqs.Add(´TRAFEGO_POS_´+QR_FTP.FieldByName(´UF´).AsString+´_´+QR_FTP.FieldByName(´CICLO´).AsString+´_´+ANO_MES_CICLO+´*´+´.gz´);
AQUI PASSO O NOME DO ARQUIVO A SER PESQUISADO NO SCRIPT FUNCIONA A CONSULTA COM O *, MASD NO INDY NÃO,POR ISSO ACHO QUE É NO INDY O PROBLEMA.



Responder

Gostei + 0

10/06/2009

Etspaz

JÁ DESCOBRI QUE ESTAVA FAZENDO ERRADO, QUANDO PASSAVA:
IdFTP1.get(´/DIR_FTP/´+arq [x],DIR_LOCAL\´+ arqs[x],true );

ELE ESTAVA REALMENTE TENTANDO ESCREVER COM O *, VC TAVA CERTO.
PORÉM, NÃO SEI COMO PASSAR O NOME COM O * MESMO PARA LISTAR TODOS Q PRECISO, E PEGAR SÓ O NOME REAL DOS ARQUIVOS LISTADOS, PRA DEPOIS MANDAR COPIAR, TIPO:

IdFTP1.get(´/DIR_FTP/´+NMREAL,DIR_LOCAL\´+ NMREAL,true );


Responder

Gostei + 0

12/06/2009

Etspaz

Bom dia pessoal,

Problema parcialmente resolvido.
decobri como pesquisar com * no ftp:
vejam:


//pra listar os nomes de arquivos que podem estar no ftp
arqs.Add(´TRAFEGO_POS_´+QR_FTP.FieldByName(´UF´).AsString+´_´+QR_FTP.FieldByName(´CICLO´).AsString+´_´+ANO_MES_CICLO+´*´+´.gz´);

//depois de conectar e seguir ao diretório desejado
//pra listar os arquivos
IdFTP1.List(ListBox1.Items,arqs[x],false);

//se encontrar os arquivos
if ListBox1.Items.Count > 0 then
begin
for indice:=0 to ListBox1.Items.Count -1 do
begin
try
//inicia a transferência do arquivo
IdFTP1.Get(ListBox1.Items.Strings[indice], ´Dir_local\´+ ListBox1.Items.Strings[indice],true);
except
on e:exception do
showmessage(e.Message);
end;
...


o problema é que IdFTP1.List(ListBox1.Items,arqs[x],false) só está funcionando quando encontra e traz os arquivos corretos, mas quando não existe o arquivo dá o erro:
First chance exception at $7C812A5B. Exception class EIdReplyRFCError with message ´FECHAMENTO_CICLO_POS_AC_12_200906*.gz: No such file or directory.
´. Process Project1.exe (5208)

não entendo o q acontece, pois esta função é justamente para listar os q existem e não ter problema de tentar copiar algo q não existe, correto?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar