Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3077 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal, boa tarde.

Estou quebrando a cabeça com um probelma aqui com relação a drives mapeados o cenário é o seguinte:

Tenho uma aplicação principal.exe que chama outros executáveis(que são outros sistemas que desenvolvemos), dois desses sistemas tem a função de fazer bakcup da base de dados firebird que usamos, a app1, e a app2, o código para geração do backup é idêntico(particularmente não achei nenhuma diferença entre os dois).

 

- quando abro o app1 pelo principal.exe e tento fazer o backup, o serviço que executa o backup roda, e cria um arquivo fbk num drive mapeado sem problemas.

- pelo app1 quando chamo a rotina para compactar o fbk eu faço um [if not fileexists(arquivofbk) then showmessage('arquivo não encontrado')] e é justamente essa mensagem que obtenho, ou seja o fileexists retorna false, mas o arquivo está lá!

- pelo app2 tudo funciona sem erros

- agora quando abro o app1 diretamente, sem ser pelo principal.exe o app1 não apresenta o erro.

 

principal.exe chama os executaveis usando ShellExecute...

 

Alguém já passou por isso ou tem alguma idéia do porquê isso ocorre e se sim como resolver?

 

Obrigado desde já.

 

  • Consultores
Postado

Alguma coisa poderia fazer o app1 ser mais rápido do que o app2 e executar o fileexists antes de terminado o serviço de executar o bakcup?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado (editado)

Oi Elton, obrigado pela resposta, conferi novamente e nesse caso específico as rotinas estão idênticas, o que tu falou faz sentido mas não consegui detectar onde ele estaria tendo essa execução mais rápida.

Fiz um teste e antes do FileExists() eu salvei o conteúdo de um StringList na pasta onde faço o FileExists(), nesse caso o FileExists funcionou normalmente, exceto em uma máquina com windows server 2008.

Ainda tem uma parte que está nebulosa pra mim: pq o SaveToFile() funcionou sem problemas e o FileExists() passou a funcionar após a gravação do arquivo? Me passa a impressão de que o drive não está visível para o Delphi até que eu faça o SaveToFile()... o pq ainda não consegui visualizar...

Editado por Tiago Ravache
  • Consultores
Postado

Se fosse outra situação poderia sugerir problemas com "links simbólicos" (symbolic links).

Como não é o caso, a única coisa que me ocorreu sem ter o código pra analisar foi a que eu citei.

Em 17/06/2016 at 14:40, Tiago Ravache disse:

Ainda tem uma parte que está nebulosa pra mim: pq o SaveToFile() funcionou sem problemas e o FileExists() passou a funcionar após a gravação do arquivo? Me passa a impressão de que o drive não está visível para o Delphi até que eu faça o SaveToFile()... o pq ainda não consegui visualizar...

Me parece improvável, mas se está com essa dúvida, antes de testar se o arquivo existe, teste se o drive existe, se a pasta existe, etc... Pelo menos vai confirmar ou tirar sua dúvida. :)

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 3077 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.