0

我试图在一个小应用程序中使用相机但收到此错误:

错误:无效的类类型转换

我所做的是:

  • 新的多设备应用程序
  • 动作列表组件
  • TakePhotoFromCameraAction1添加到行动清单
  • 一个按钮,动作连接到TakePhotoFromCameraAction1

运行 64 位 IOS9 Ipad 错误

运行 32 位 IOS9 Ipad 错误

看起来这个函数出现了错误FMX.MediaLibrary.Actions()

procedure TTakePhotoFromCameraAction.ExecuteTarget(Target: TObject);
begin
  if IsSupportedInterface then // This line create the error
    FCameraService.TakePhoto(Target as TControl, GetParamsPhotoQuery);
end;

任何想法?

4

2 回答 2

1

我将它作为案例发送给 Embacadero 支持,这是一个错误。

Answear 和热修复如下


无效的类型转换看起来源于您使用 TSpeedButton 的事实。如果您使用 TButton,TakePhotoFromLibraryAction 将起作用。问题发生在 TTakePhotoFromLibraryAction.ExecuteTarget 中,其中 Target 作为 TObject 传递。因此,调试器没有提供任何关于目标是什么类的线索,但它可能不是 TControl 的后代,如果要成功转换,它就需要它。

我将为此记录一个错误,但与此同时,我建议您使用 TButton 来调用此操作。

于 2015-09-25T10:48:47.940 回答
-1
  • 我的 TSpeedButton 位于 TListbox 项目上。
  • 我遇到了 Invalid Class Typecast 错误
  • 我将 TSpeedButton 更改为 TButton 类型。但是,如果您不小心单击了列表项而不是 TButton,错误仍然会返回。
  • 最终,我将代码从 ActionList 切换到了这种方法:

http://docwiki.embarcadero.com/RADStudio/XE8/en/Taking_Pictures_Using_FireMonkey_Interfaces

  • 为我工作,但仍在使用 TSpeedbutton。
于 2015-10-11T05:24:21.320 回答