我在线搜索了如何将JLong(JavaType)转换为Double以便在C ++代码中使用它,但没有找到示例。
我尝试了各种方法来投射此JLong,但没有任何效果。

function TimeSinceBoot(const aContext: JContext): Double;
  begin
    result := (((TJSystemClock.JavaClass.ELAPSED_REALTIME div 1000(JLong)) div 60(JLong))(JDouble))(Double);
  end;


它说仍然是运算符或;失踪。
有什么建议么 ?

最佳答案

除了您使用错误的语法进行强制转换(强制转换语法为well documented)外,在Delphi中,无论如何,you can't cast an integral type to a floating point type也是如此。而且,您当然无法将JLong转换为双倍。

但是显然,在Delphi转换中,JLong是带有称为doubleValue的方法的接口。使用:

Result := TJSystemClock.JavaClass.ELAPSED_REALTIME.doubleValue / 60000.0;

07-28 12:46