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

03/10/2013

0

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

Responder

Posts

07/10/2013

Johni Marangon

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
Responder

07/10/2013

Johni Marangon

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.
Responder

08/10/2013

Eduardo Mendonça

faze o teste com cada tipo já não resolveria?
Responder

08/10/2013

Johni Marangon

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








Responder

30/09/2016

Erasmo Junior

alguém resolveu isso tenho a mesma duvida.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar