Como saber se um tipo de variável é TDateTime, TDate ou TTime
03/10/2013
0
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
Posts
07/10/2013
Johni Marangon
[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
07/10/2013
Johni Marangon
[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.
08/10/2013
Johni Marangon
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
Clique aqui para fazer login e interagir na Comunidade :)