You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FMX(Android)平台下Ticks64()函数返回值为0的问题咨询

在Android Firemonkey中调用Ticks64()返回0的问题解决思路

我之前在Delphi的Firemonkey Android项目里也碰到过Ticks64()(来自IdGlobal.pas)始终返回0的情况,当时折腾了好一阵才找到根源和解决办法,分享给你:

问题根源

Ticks64()是Indy组件库中用于获取高精度时间戳的函数,但它的实现是平台相关的。在早期版本的Indy中,针对Android平台的适配存在缺陷,没有正确调用Android系统提供的时钟API,导致函数无法获取有效时间戳,直接返回了默认的0值。另外,如果项目的编译配置有问题(比如未正确引入Indy的相关路径,或者API版本适配过低),也可能触发这个问题。

可行的解决办法

  • 升级Indy到最新稳定版:较新的Indy版本(比如10.6.2及以上)已经修复了Android平台下的这个适配问题,很多开发者升级后,Ticks64()就能正常返回时间戳了。
  • 替换为FMX原生函数:如果暂时不想升级Indy,可以直接改用Firemonkey自带的TThread.GetTickCount64()函数。它在Android平台上能正确返回自系统启动以来的64位毫秒数,功能和Ticks64()基本一致,而且是官方适配的,稳定性更有保障。
  • 检查编译配置:确认你的Android项目已经正确添加了Indy相关单元的搜索路径,并且编译时的Android API Level至少设置为21及以上,避免因API版本过低导致底层调用失败。

额外验证小技巧

你可以在调用函数后,把返回值通过Log.d或者FMX的ShowMessage打印出来,或者在调试模式下进入Ticks64()的实现代码,看看底层是否正确调用了Android的SystemClock.elapsedRealtime()这类系统API,这样能更快定位问题所在。

内容的提问来源于stack exchange,提问作者vincent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:32:29