Como saber se um tipo de variável é TDateTime, TDate ou TTime

Delphi

03/10/2013

Ola,

eu preciso saber se uma variável é do tipo TDateTime, TDate ou TTime

Alguám tem alguma ideia de como fazer isso?

Tentei usar o código abaixo mas o retorno é sempre falso

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.Rtti,
  System.SysUtils;

var
  DateTime, Date,Time: TValue;

begin

  DateTime:= StrToDateTime( '01/01/2013 01:05:09' );
  if ( DateTime.TypeInfo = System.TypeInfo(TDateTime) ) then
    Writeln( 'Is TDateTime' )
  else
    Writeln( 'Is NOT TDateTime' );

  Date:=  StrToDate( '01/01/2015' );
  if ( Date.TypeInfo = System.TypeInfo(TDate) ) then
    Writeln( 'Is TDate' )
  else
    Writeln( 'Is NOT TDate' );

 Time:=  StrToTime( '01:01:02' );
  if ( Date.TypeInfo = System.TypeInfo(TTime) ) then
    Writeln( 'Is TTime' )
  else
    Writeln( 'Is NOT TTime' );

 Readln;

end.


Obrigado
Johni Marangon

Johni Marangon

Curtidas 0

Respostas

Johni Marangon

Johni Marangon

03/10/2013

A solução para o problema descrito nesse post esta nos links abaixo, caso alguém tenha a mesma necessidade.

[url]http://stackoverflow.com/questions/19165019/how-know-type-variable-is-tdatetime-tdate-and-ttime-in-delphi[/url]

[url]https://forums.embarcadero.com/message.jspa?messageID=601201#601201[/url]

Abraço
GOSTEI 0
Johni Marangon

Johni Marangon

03/10/2013

A solução para o problema descrito nesse post pode ser vista nos links abaixo, caso alguém precise

[url]https://forums.embarcadero.com/message.jspa?messageID=601201#601201[/url]

[url]http://stackoverflow.com/questions/19165019/how-know-type-variable-is-tdatetime-tdate-and-ttime-in-delphi[/url]

Abraço.
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

03/10/2013

faze o teste com cada tipo já não resolveria?
GOSTEI 0
Johni Marangon

Johni Marangon

03/10/2013

Ola maginal tudo bem?

Internamente o Delphi trata tipos de TDateTime, TDate e TTime data como Double, dai a nossa dificuldade pois tipos de dados ponto flutuante devem ter tratamento diferente dos tipos data em comandos SQL.


Estamos utilizando dessa forma pois queremos montar um Builder SQL, nossa estrutura de campos esta utilizando o tipo TValue para ficar genérico a passagem de paramentos.


Por exemplo: o valor 40899 representa a data de 22/12/201 mas também pode representar um valor monetário qualquer.

var
  Valor: Double;

begin
  Valor:= 40899;

  ShowMessage( DateToStr( TDateTime( Valor ) ) );

  ShowMessage( FormatCurr( '0.00', Valor ) );

end;



Grande abraço








GOSTEI 0
Erasmo Junior

Erasmo Junior

03/10/2013

alguém resolveu isso tenho a mesma duvida.
GOSTEI 0
POSTAR