2017-04-02 66 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

相關問題