[fpc-pascal] Will the size of an executable depend on the uses clause

Jean SUZINEAU jean.suzineau at wanadoo.fr
Fri Jun 18 18:13:52 CEST 2021

Ooops... little overflow bug
My computer has reached 33 days of uptime today and with

     t, d, h, m, s: Integer;

you switch to the negative side ...
I got a display like : -8:-4:-52

Replacing with QWord solved the problem (I imagine DWord would just 
allow for something like 66 days)
    t, d, h, m, s: QWord;

I found this bug because incidentally I had the idea to have a look at 
the Ubuntu version of uptime which is installed on my system with 
Windows Subsystem for Linux.
This uptime doesn't match the value of GetTickCount64, you just get the 
uptime since you clicked on the Ubuntu icon in Windows ...

Here is the modified code :

program uptime;

function GetTickCount64: QWord; stdcall; external 'kernel32.dll';

function _2d( _i: Integer): String;
      Str( _i, _2d);
      if Length(_2d) < 2 then _2d:= '0'+_2d;


function FormatUpTime( _tc: QWord): String;
    t, d, h, m, s: QWord;
    sd: String;
      t:= _tc div 1000;
      s:= t mod 60;
      m:= (t div 60) mod 60;
      h:= (t div 3600) mod 24;
      d:= (t div 86400);

      FormatUpTime:= _2d(h)+':'+_2d( m)+':'+_2d( s);
      if 0 = d then exit;

      Str( d, sd);
      FormatUpTime:= sd+' '+FormatUpTime;

      WriteLn( FormatUpTime( GetTickCount64));

More information about the fpc-pascal mailing list