Jump to content
Fórum Script Brasil
  • 0

(Resolvido) StrToFloatDef com erro de converssão


Leo Serrao

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...