Fórum StrToFloatDef com erro de converssão #415368
13/04/2012
0
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.
Léo Serrão
Curtir tópico
+ 0Posts
13/04/2012
Joel Rodrigues
Gostei + 0
13/04/2012
Léo Serrão
Gostei + 0
14/04/2012
Marco Salles
Voce tem que converter este Variant para String .. Utilize o VarToStr
Volume:= StrToFloatDef(VarToStr(EXCEL.WORKBOOKS[1].SHEETS[PLAN].CELLS[LINHA, 14].VALUE), 0);
Gostei + 0
16/04/2012
Léo Serrão
Gostei + 0
16/04/2012
Bruno Leandro
Volume:= StrToFloatDef(StrToFloat(VarToStr(EXCEL.WORKBOOKS[1].SHEETS[PLAN].CELLS[LINHA, 14].VALUE)), 0);
Gostei + 0
16/04/2012
Léo Serrão
Gostei + 0
16/04/2012
Marco Salles
engraçado , testei nesses dois casos aaixo e não deu erro nenhum
var volume:real; V:Variant; begin V:=#DIV/0!; Volume:= StrToFloatDef(VarToStr(v), 0); showmessage(floattostr(volume)); ClientDataSet1.Append; ClientDataSet1Salario.AsVariant:=#DIV/0!; ClientDataSet1.Post; Volume:= StrToFloatDef(VarToStr(ClientDataSet1Salario.Value), 0); showmessage(floattostr(volume));
Gostei + 0
16/04/2012
Léo Serrão
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!
Gostei + 0
16/04/2012
Marco Salles
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!
em
http://www.activedelphi.com.br/forum/viewtopic.php?t=72644&sid=3cdfa13f90edbc868a5ee777fd3365b5
estamos lá e estamos aqui
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)