【问题标题】:Where is GetTickCount after Delphi 6?Delphi 6 之后的 GetTickCount 在哪里?
【发布时间】:2011-10-28 05:11:15
【问题描述】:

我正在尝试从 Delphi 6 迁移到 Delphi 2010,但在 Delphi 2010 中找不到 GetTickCount 函数。我的 uses 子句中有 IdGlobalSysUtilsDateUtils

var
  RefreshTick : Cardinal;
begin
  RefreshTick := GetTickCount;
end;

它给了我一个错误:

未声明的标识符:GetTickCount

有什么替代方法?

【问题讨论】:

    标签: delphi indy


    【解决方案1】:

    GetTickCount 函数是 Windows 单元的一部分。

    【讨论】:

    • Delphi 6,IdGlobal 中有GetTickCount 功能,但在Delphi 2010, IdGlobal 功能不存在
    • D6 随 Indy 8 提供。IdGlobal.GetTickCount() 在 Indy 10 中被重命名以停止与 Windows.GetTickCount() 冲突。
    【解决方案2】:

    正如您后来发现的那样,您使用的 GetTickCount 函数是由 IdGlobal 单元提供的。它与 Windows API 函数同名。 您使用的函数现在命名为 Ticks 将 Windows 添加到您的 uses 子句以获取 API 函数,或更改您的代码以改用新名称。

    看起来更名是在 2004 年的某个时候。您应该更加努力地保持您的 Indy 库是最新的。不要只使用 Delphi 附带的版本——它可能在你得到它之前就已经过时了。始终从 Indy 的源代码管理中下载最新版本。

    【讨论】:

    • IdGlobal.GetTickCount() 存在于 Indy 9 及更早版本,在 Indy 10 中重命名为 IdGlobal.Ticks()
    【解决方案3】:

    GetTickCount 不依赖于 Delphi 的版本,因为它是一个 WinAPI 函数,在 Delphi 2010 中也必须存在,在 Delphi XE 和 XE2 中也是如此。

    编辑:将 Windows 单元添加到您的使用部分。

    【讨论】:

    • 我的使用部分中有IDGlobal, SysUtils, DateUtils
    • Win32 API GetTickCount() 函数在Windows 单元中,而不是在SysUtils 单元中。
    【解决方案4】:

    在 Lazarus 1.0.12 中,下一个命令在 windows 中运行正常:

    使用...Windows...

    代码如下:

    Var
      initialtime, elapsedtime: DWord;
      .
    begin
      .
     initialtime := Windows.GetTickCount;
      .
     elapsedtime := Windows.GetTickCount - initialtime;
    
     WriteLn( 'Time elapsed: ' + IntToStr(elapsedtime) + ' miliseconds');
    

    【讨论】:

    • 请务必详细说明您的答案,以便更好地理解
    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多