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

(Resolvido) StrToFloatDef com erro de converssão


Leo Serrao

Pergunta

Olá pessoal!

Eu desenvolvi um programinha no delphi 6, versão que a empresa que trabalho possui licença, para importar para o banco de dados (SQL Server 2000) dados a partir de uma planilha do Excel. Ele está funcionando exceto quando o valor da célula que estou lendo, que deveria ser um valor string convertido em float, é #DIV/0! ele dá um erro de converssão, observe a linha de código:

Faço um loop que lê linha por linha da planilha e converte de string para float. Declarei no delphi uma variável do tipo real para receber este valor:

Volume:= StrToFloatDef(EXCEL.WORKBOOKS[1].SHEETS[PLAN].CELLS[LINHA, 14].VALUE, 0);

A função converte normalmente valores númericos. Mas no caso do erro #DIV/0! na célula o programa interrompe a execução. Quando a função StrToFloatDef não conseguisse converter era para atribuir a variável o valor zero. Mas não está acontecendo. Alguém pode me ajudar a resolver essa conversão.

Grato pela ajuda.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Valeu pela dica Jhonas.

No meu caso é um arquivo do Excel com várias planilhas cada uma contendo mais de 65000 registro. Meu programa vai passa por cada planilha e por todas as linhas que possuirem dados não importa quantas sejam.

é muito complicado localizar e corrigir as células que apresentarem erros uma por uma.

Gostaria que as linhas cujas células apresentam valores string como 0,156 ou 3 fossem convertidos para float, como já está acontecendo. O problema é que ao se deparar com um valor na célula como #Div/0! ou qualquer outro erro ele simplesmente colocasse 0 (zero) na variável.

Na dica que me mostraste o try envia uma mensagem para que seja feita a correção e não é isso que preciso.

Se mais alguém puder posta mais alguma dica?

Link para o comentário
Compartilhar em outros sites

  • 0

acho que voce não entendeu o espirito da coisa...

necessariamente não é preciso mostrar qualquer mensagem de erro ... voce pode simplesmente ignorar o erro e continuar o processamento

então, leia com atenção, como usar o try except ( use o help do delphi F1 ) que é o que voce vai precisar usar

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu pela dica Jhonas, mas não posso simplesmente ignorar o erro, eu preciso mesmo que o sistema ao se deparar com um valor que ele não consiga converter para float ele deve atribuir zero (0). Por causa que o outro sistema que será alimentado por essas informações exige isso.

Valeu mesmo assim.

Link para o comentário
Compartilhar em outros sites

  • 0

Você estava certo Jhonas!

A saída que encontrei foi essa:

try

cell14:= StrToFloatDef(VarToStr(EXCEL.WORKBOOKS[1].SHEETS[plan].Cells[Linha,21].value), 0);

Except

cell14:= 0.0;

end;

Funcionou. Sempre que o programa se depara com o valor #DIV/0! ele colocar 0.0

Muito obrigado pela dicas!

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,1k
    • Posts
      652k
×
×
  • Criar Novo...