2017-04-02 46 views
0

没有提升的错误,我在Android世界的是Android 4.4.2

相当一个新手,我跑下一情况

我创建这个代码

//function 
procedure LoadPictureFromResource(const ResName: string; out aImage: TImage); 
var 
    aResource: TResourceStream; 
begin 
    aResource := TResourceStream.Create(HInstance, ResName, RT_RCDATA); 
    try 
    aImage.Bitmap.LoadFromStream(aResource); 
    finally 
    aResource.DisposeOf; 
    end; 
end; 
.... 
//call function 
    FImage := TImage.Create(Self); 
    FImage.Parent := Self; 
    FImage.Align := TAlignLayout.Left; 
    FImage.Margins.Left := 6; 
    FImage.Margins.Top := 3; 
    FImage.Margins.Bottom := 3; 
    FImage.Margins.Right := 3; 
    FImage.Width := 64; 
    LoadPictureFromResource(resPicturesError, FImage); 

显然有程序的声明参数中的错误

代替var或const或空使用

适用于Windows,但仍然是语法/逻辑错误

Android的调试模式 - 德尔福报告错误(该设备不回答任何与正常工作)段错误(11)

工作模式 - Delphi和设备不报告任何东西

Android不报告任何内容(错误是危险的) - 为什么?

+0

对DisposeOf的调用没有意义。 out参数是错误的,应该是按值传递的。 –

+0

不,它是不同的代码用于Windows版本,我知道是错误的,问题是不同的 – ceha

+1

非常繁琐,必须为ARC和非ARC代码。我没有意识到这一点。无论如何,这是错误的。去掉它。您传入对现有实例的引用。 –

回答

0

资源文件只支持桌面平台,请参见细节文档:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Resource_Files_Support

如果你想将文件添加到在Delphi中移动项目,请在博客中提供的说明:https://community.embarcadero.com/article/articles-tutorials/151-ui/927-deploying-and-accessing-local-files-on-ios-and-android

请注意,iOS和Android的路径不同 - 您可以在“部署”窗口中输入它们,该窗口对每个平台都有单独的设置。

+0

这不是真的,如果是RT_RCDATA类型的话你可以使用资源。 – ceha

+0

嗯......我已经指出了移动设备的特殊部分的官方文档(博客条目重复相同的解决方案)。 system.pas中实现了FindResource的多平台版本,但文档清楚地建议避免它。 – zdzichs

+0

我发现这个解决方案在这里http://stackoverflow.com/questions/21291706/delphi-firemonkey-store-data-inside-application – ceha

相关问题