FileExists não localiza arquivo existente na pasta no micro do cliente ( mas em meu micro localiza )
21/12/2015
0
Prezados
Tenho uma rotina que me devolve a quantidade de arquivos existentes em uma determinada pasta.
Ela em meu micro funciona perfeitamente, porém, executando a mesma rotina em outro micro ele me retorna 0 como quantidade de arquivos.
Ex.: Descompacto um arquivo ZIP e ele cria uma pasta. No sistema, aponto o SelectDirectory para a tal pasta, pego o caminho e passo a extensão do(s) arquivo(s) a ser(em) procurado(s) pra rotina
Veja que a rotina, escreve o nome do arquivo SGD no LOG, e depois se certifica se o arquivo existe (redundante isso).
Em meu micro ele escreve o caminho completo de todos os arquivos e informa o total em tela
No micro do cliente ele também cria a lista contendo todas as imagens, mas o comando FileExists sempre devolve 0 imagens
Já copiei o caminho dos arquivos existentes no log e colei no windows explorer. O caminho + arquivo existente localiza e abre o arquivo, mas o delphi diz não encontrá-lo.
O que pode ser isso?
Tenho uma rotina que me devolve a quantidade de arquivos existentes em uma determinada pasta.
Ela em meu micro funciona perfeitamente, porém, executando a mesma rotina em outro micro ele me retorna 0 como quantidade de arquivos.
Ex.: Descompacto um arquivo ZIP e ele cria uma pasta. No sistema, aponto o SelectDirectory para a tal pasta, pego o caminho e passo a extensão do(s) arquivo(s) a ser(em) procurado(s) pra rotina
FindFirst(E_PASTA.Text + '\*.SGD', faAnyFile, SearchRec); repeat begin M_LOG.Lines.Add(E_PASTA.Text + '\' + SearchRec.Name); if FileExists(E_PASTA.Text + '\' + SearchRec.Name) then qtdImagens := qtdImagens + 1; end until FindNext(SearchRec) <> 0; L_PASTA.Caption := 'Pasta contendo: ' + IntToStr(qtdImagens) + ' imagens';
Veja que a rotina, escreve o nome do arquivo SGD no LOG, e depois se certifica se o arquivo existe (redundante isso).
Em meu micro ele escreve o caminho completo de todos os arquivos e informa o total em tela
No micro do cliente ele também cria a lista contendo todas as imagens, mas o comando FileExists sempre devolve 0 imagens
Já copiei o caminho dos arquivos existentes no log e colei no windows explorer. O caminho + arquivo existente localiza e abre o arquivo, mas o delphi diz não encontrá-lo.
O que pode ser isso?
Zenner And
Curtir tópico
+ 0
Responder
Posts
22/12/2015
Hélio Devmedia
Olá,
Eu passei por isso, e parece que os arquivos descompactados são marcados com alguma propriedade que o FileExist não consegue encontra-lo. Mas depois de um tempo ele passa a ser encontrado.
Internamente na função FileExists ela tem dois ifs que verifica se pode ou não analizar o arquivo:
neste ponto do código os arquivos extraídos do zip ficam de fora.
A solução que eu encontrei foi com as novas bibliotecas de manipulação de arquivos do Delphi 2010 (ou superior) usando a biblioteca System.IOUtils na uses, (se bem que em alguns raros momentos falhou da mesma forma.
Ela tem várias classes com métodos abstratos que pegam informações de quase tudo que envolve diretórios e arquivos.
Eu então uso TFile.Exists('caminho do arquivo') para encontrar se um caminho existe;
Mas vale apenas olhar as demais funções desta biblioteca por exemplo TDirectory.CreateDirectory() para criar um diretório ou TPath.GetTempPath para descobrir qual a pasta de arquivos temporários do sistema (independentemente de plataforma)
Eu passei por isso, e parece que os arquivos descompactados são marcados com alguma propriedade que o FileExist não consegue encontra-lo. Mas depois de um tempo ele passa a ser encontrado.
Internamente na função FileExists ela tem dois ifs que verifica se pode ou não analizar o arquivo:
Flags := GetFileAttributes(PChar(FileName)); if Flags <> INVALID_FILE_ATTRIBUTES then e depois if faSymLink and Flags <> 0 then
neste ponto do código os arquivos extraídos do zip ficam de fora.
A solução que eu encontrei foi com as novas bibliotecas de manipulação de arquivos do Delphi 2010 (ou superior) usando a biblioteca System.IOUtils na uses, (se bem que em alguns raros momentos falhou da mesma forma.
Ela tem várias classes com métodos abstratos que pegam informações de quase tudo que envolve diretórios e arquivos.
Eu então uso TFile.Exists('caminho do arquivo') para encontrar se um caminho existe;
Mas vale apenas olhar as demais funções desta biblioteca por exemplo TDirectory.CreateDirectory() para criar um diretório ou TPath.GetTempPath para descobrir qual a pasta de arquivos temporários do sistema (independentemente de plataforma)
Responder
Clique aqui para fazer login e interagir na Comunidade :)