Valores em tempo de Debug
14/12/2005
0
**********************************************************
var
cDataAtual: TDateTime;
cAnoA, cMesA, cDiaA: Word;
cTotDia, cDiaAtu, cMesAtu, cDiaPer, cMultiplo, cMedDiv: single;
begin
inherited;
CDSConsFalta.Open;
cCommandText_Original := SDSConsFalta.CommandText;
bbtnok.SetFocus;
cDataAtual := Now;
DecodeDate(cDataAtual, cAnoA, cMesA, cDiaA);
cMultiplo := 0.01;
cMesAtu := cMesA - 1;
if cMesAtu = 0 then
cMesAtu := 1;
cTotDia := 30;
if cDiaA > cTotDia then
cTotDia := cDiaA;
// Transforma o dia em percentual abaixo de 1 - (1 equivale a 100¬)
cDiaPer := cDiaA * 100 / cTotDia * cMultiplo;
cMedDiv := cMesAtu + cDiaPer;
***********************************************************
a rotina funciona blz, só fico com uma duvida, em tempo de debug, a medida que o cursor do mouse é posicionado em cima das variaveis, aparece o valor delas como se fosse o Hint, ok.
Fazendo os calculos na calculadora dá um valor e na tela aparece outro.
Exemplo: cDiaA = 14
cTotDia = 30
cMultiplo = .01
cMesAtu = 11
Calculando conforme formula acima o resultado na calculadora dá:
cMedDiv = 11.4666667
na tela do debug tenho
cMedDiv = 2,1754084073e-32
Se alguém puder me dar uma orientação fico grato.
[/img]
Tida
Posts
14/12/2005
Emerson Nascimento
[b:dfe1ca3e74]cMedDiv := cMesAtu + cDiaPer;[/b:dfe1ca3e74]
se acabar nessa linha, creio que o valor 2,1754084073e-32 esteja sendo exibido porque a variável cMedDiv não é usada em nenhum lugar abaixo dessa linha. para evitar desperdício de recursos, o Delphi simplesmente ignora o conteúdo dessa variável. agora faça um uso qualquer e você verá que o valor não será esse. ponha uma última linha assim:
showmessage(floattostr(cMedDiv));
e debugue novamente. você verá que os valores estarão corretos.
14/12/2005
Tida
cMedDiv = 2,1754084073e-32
com os parenteses ficou
cMedDiv = 5,8537753262e-36
talvez o erro esteja no tipo de variável que estou usando, o fator preponderante do calculo é o cMultiplo que está como single pois o mesmo deve conter o valor de 0.01
Não sei quais os tipos de variáveis que posso usar para numeros com decimal.
14/12/2005
Tida
a rotina não acaba ali, apenas mostrei até onde eu debuguei, mas vou testar sua dica obrigado.
14/12/2005
Tida
valeu emerson, mostrando na tela veio o valor correto, sabes porque o delphi faz isso?
14/12/2005
Emerson Nascimento
como eu disse, o Delphi faz de tudo para economizar recursos.
provavelmente a variável [i:192d3c63cc]cMedDiv[/i:192d3c63cc] não é utilizada depois daquela atribuição, então se a variável não é utilizada, o Delphi ignora seu valor.
Clique aqui para fazer login e interagir na Comunidade :)