ERRO de calculo com datas no Delphi

Delphi

17/05/2018

olá, estou fazendo uma simples verificacao de uma variavel e um campo tipo TDATE
Fiz um exemplo basico abaixo:
Var xData:TDate;
Begin
    TabelaCampo_Data.Value := Date;
    xData := Date;
    IF TabelaCampo_Data.Value = Date Then
        showmessage('Data igual')
   Else
      showmessage('Data diferente');

.
Ok, no exemplo acima o resultado deve sempre ser verdadeiro, correto?
Pois comigo está dando Falso, tanto o campo como a variavel é tipo TDATE
No debug eu olho e as datas sao aparentemente iguais, mas ao passar no IF da como falso.
Alguém já passou por isso?
Alberto

Alberto

Curtidas 0

Respostas

Raimundo Pereira

Raimundo Pereira

17/05/2018

Bom dia Beto, Tente assin.
Var xData:TDate;
Begin
//
xData := Date;
//Vai ter uma insert ou um edit?
// Vamos realizar un insert
with TabelaCampo_Data do begin
open;
insert;
Fielbyname('DATA').VALUE:=xData;
Post;

close;
open;

If Fielbyname('DATA').VALUE=xData Then
Begin
showmessage('Data igual')
end
Else
Begin
showmessage('Data diferente');
End;

end;
end;
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

17/05/2018

Var xData:TDate;
Begin
//
xData := Date;
//Vai ter uma insert ou um edit?
// Vamos realizar un insert
with TabelaCampo_Data do begin
open;
insert;
Fielbyname('DATA').VALUE:=xData;
Post;

close;
open;

If Fielbyname('DATA').VALUE=xData Then
Begin
showmessage('Data igual')
end
Else
Begin
showmessage('Data diferente');
End;

end;
end;
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

17/05/2018

você precisa testar seguindo o exemplo do P2:

Var xData:TDate;
Begin
    xData := Date; // atribui o valor à variável
    TabelaCampo_Data.Value := xData; // grava no campo o conteúdo da variável
    IF TabelaCampo_Data.Value = xData Then // compara o conteúdo do campo com o conteúdo da variável
        showmessage('Data igual')
   Else
      showmessage('Data diferente');
GOSTEI 0
Alberto

Alberto

17/05/2018

Galera, obrigado pelos comentários, encontrei o problema:
Era um componente TDateTimePicker, eu inicialmente pegava a propriedade DATE dele
que o usuario havia escolhido e entao passava como parametro para uma funcao.
Dentro da funcao eu faço a verificacao, que no caso estava dando errado, pois esse
componente, retorna o valor de DATE , provavelmente com TDATETIME, e internamente
o Delphi ao comparar verifica que nao sao iguais, provavelmente mais um erro
de componente mesmo.
Fiz o seguinte pra contornar a situacao:
variavel := StrToDate(DateToStr(datetimepicker1.date));

GOSTEI 0
POSTAR