Thanks for the sample.  For what it's worth, I got the executable down to just 10K using powerbasic version 6,  I suspect that's as small as it can get, since I did have to include a winbase.inc that comes with the compiler to get the function call of the GetTickCount64 call.  But then again, I cheated a bit by only having a single print statement where I formatted the output to my liking by simply using semicolons to string the various pieces of information together.

Powerbasic isn't cross platform, but it does consistently produce the smallest executables I've ever seen in the windows environment, and I've been using it for more than 20 years.

I do use fpc when I need cross platform capabilities though, so there is that.


On 6/16/2021 5:49 PM, Jean SUZINEAU via fpc-pascal wrote:
My best score is 67 kb after strip -s with the code below ... ;-)

Of course it will not work on every  version of Windows.

program uptime;

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

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

end;

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

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

     Str( d, sd);
     Result:= sd+' '+Result;
end;

begin
     WriteLn( FormatUpTime( GetTickCount64));
end.


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to