执行函数的计时器返回零

时间:2014-01-05 20:01:15

标签: pascal freepascal

在linux endtime返回结果0。它应该是给定睡眠功能的返回数字(以毫秒为单位)。在GUI上的标签上显示0

这是代码:

var starttime: longint;
var endtime: longint;

function GetTickCount : DWORD;
begin
{$IFDEF MSWINDOWS}
  Result := Windows.GetTickCount mod High(LongInt);
{$ELSE}
  Result := GetTickCount mod High(LongInt);
{$ENDIF}
end;



procedure TForm1.Button4Click(Sender: TObject);
begin

  starttime:=getTickCount;

  // something do...

  Sleep(1500); // sleep in miliseconds, works!

  endtime:=getTickCount-starttime;

  Label1.Caption:=inttostr(endtime);  // returns 0 ?

end;

1 个答案:

答案 0 :(得分:0)

gettickcount函数的{$ else}中的gettickcount被解释为过程的返回值。 (结果在Delphi中)

根据模式,这可能会导致永久递归

解决方案:就像在Windows案例中一样,使用unitname限定

   {$else}
        Result := SysUtils.GetTickCount mod High(LongInt);