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

[resolvido] Rotina Para Não Dar Erro


Guest --felipe --

Pergunta

Guest --felipe --

bom pessoal eu queria saber como faço uma rotina para não dar erro caso o caminho do arquivo indicado não exista.

eu tentei assim:

pik := InputBox(pik,'Arquivo .PIK','c:\gerar brd\pik\');
  try
    AssignFile(Input,pik);
  except
    pik := InputBox(pik,'Arquivo .PIK','c:\gerar brd\pik\');
  end;

só que mesmo assim acontece o erro, e o pior é que o comando no "except" não é executado

ah, e o programa deve pedir o caminho tantas quantas vezes o usuario digitar o caminho errado.

valeu x)

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
bom pessoal eu queria saber como faço uma rotina para não dar erro caso o caminho do arquivo indicado não exista.

eu tentei assim:

pik := InputBox(pik,'Arquivo .PIK','c:\gerar brd\pik\');
  try
    AssignFile(Input,pik);
  except
    pik := InputBox(pik,'Arquivo .PIK','c:\gerar brd\pik\');
  end;

só que mesmo assim acontece o erro, e o pior é que o comando no "except" não é executado

ah, e o programa deve pedir o caminho tantas quantas vezes o usuario digitar o caminho errado.

Por acaso este efeito não está ocorrendo enquanto você está executando o programa por dentro da IDE do Delphi? Nesta situação, a exceção ocorre, o fluxo de execução é desviado para a linha com erro na IDE e você pode seguir depurando (F7 ou F8) ou executanto (F9), mas na sequencia o programa irá continuar e executar o InputBox dentro do except.

para pedir o caminho quantas vezes seja necessário - até que seja um arquivo válido, sugiro que você utilize um repeat..until e a função FileExists, de modo que não será necesário utilizar try..except.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
para pedir o caminho quantas vezes seja necessário - até que seja um arquivo válido, sugiro que você utilize um repeat..until e a função FileExists, de modo que não será necesário utilizar try..except.

repeat
  pik := InputBox('.PIK   --   Para sair não escreva nada.','Arquivo .PIK','c:\gerar brd\pik\');
  if pik = 'c:\gerar brd\pik\' then exit;
until FileExists(pik)=true;
AssignFile(Input,pik);

beleza ficou assim e funcionou, se o cara quiser sair da procedure não deve escrever nada.

tem algum jeito de detectar se o usuario clicou em "cancelar"??

valeu pela atençao

abraç

Link para o comentário
Compartilhar em outros sites

  • 0
repeat
  pik := InputBox('.PIK   --   Para sair não escreva nada.','Arquivo .PIK','c:\gerar brd\pik\');
  if pik = 'c:\gerar brd\pik\' then exit;
until FileExists(pik)=true;
AssignFile(Input,pik);

Está correto, mas façamos um favor a lógica, use "until FileExists(pik);" ao invés de "until FileExists(pik)=true;".

Veja o que já comentei, e o Churc complementou, sobre isto num outro post.

beleza ficou assim e funcionou, se o cara quiser sair da procedure não deve escrever nada.

tem algum jeito de detectar se o usuario clicou em "cancelar"??

Veja o que o Help diz sobre isso:

Use the InputBox function when there is a default value that should be used when the user chooses the Cancel button (or presses Esc) to exit the dialog.

ou seja, o valor que você passa como default será o mesmo retornado pela função quando o cara cancelar a entrada.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
Está correto, mas façamos um favor a lógica, use "until FileExists(pik);" ao invés de "until FileExists(pik)=true;".

é verdade..

eu nunca tenho certeza se vai funcionar sem o true, mas é rapidinho pra testar isso, viajem minha :rolleyes:

ehuieuhi vo presta mais atenção nisso valeu pelo toque.

até!

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...