Hello,
I'm proposing addition of {$I %DATETIME%} directive. A trivial patch is
attached.
The following will be possible:
const
T = {$I %DATETIME%};
begin
WriteLn(DateTimeToStr(T));
end.
Benefits of this directive:
1) Access to build date/time in native TDateTime format. Existing {$I
%DATE%} and {$I %TIME%} are inserted as strings in predefined format,
parsing is required to extract date/time components or to reformat it.
2) Atomic access to build date/time. Use of {$I %DATE%} and {$I %TIME%}
can have undesired effect if {$I %DATE%} is executed at 2016-01-15
23:59:59.999 and 1 ms later {$I %TIME%} is executed at 2016-01-16
00:00:00.000. Resulting combination of two directive is 2016-01-15
00:00:00, a day out of date.
3) Search and replace of build date/time is no longer a trivial text
editor operation.
The following ticket can then be resolved:
http://bugs.freepascal.org/view.php?id=26472
Denis
Index: compiler/globals.pas
===================================================================
--- compiler/globals.pas (revision 32893)
+++ compiler/globals.pas (working copy)
@@ -509,6 +509,7 @@
function getdatestr:string;
function gettimestr:string;
+ function getdatetimerawstr:string;
function filetimestring( t : longint) : string;
function getrealtime : real;
@@ -770,6 +771,10 @@
getdatestr:=L0(st.Year)+'/'+L0(st.Month)+'/'+L0(st.Day);
end;
+ function getdatetimerawstr:string;
+ begin
+ getdatetimerawstr := FloatToStr(Now);
+ end;
function filetimestring( t : longint) : string;
{
Index: compiler/scanner.pas
===================================================================
--- compiler/scanner.pas (revision 32893)
+++ compiler/scanner.pas (working copy)
@@ -2427,6 +2427,11 @@
hs:=gettimestr;
'DATE':
hs:=getdatestr;
+ 'DATETIME':
+ begin
+ hs:=getdatetimerawstr;
+ macroIsString:=false;
+ end;
'FILE':
hs:=current_module.sourcefiles.get_file_name(current_filepos.fileindex);
'LINE':
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel