2014-01-22 31 views
6

我需要在Delphi XE5 FireMonkey(Android)移動應用程序中存儲一些自定義靜態數據。我在網上看到了一個'RC_DATA'解決方案,但它是Windows特有的。 我需要一個跨平臺的解決方案。Delphi FireMonkey存儲應用程序中的數據

這裏是RC_DATA解決方案,我發現:http://delphidabbler.com/articles?article=2

的代碼示例中的註釋上寫着://資源類型 - RT_RCDATA(從Windows單元)

我從這個評論的結論是,裏面的代碼Windows單元是Windows特定的。如果不是這樣,我很抱歉。

由於克里斯說,它實際上是跨平臺的,我會試試看。謝謝克里斯。

關於要求組件或庫,我已閱讀並重新閱讀我的問題,我只是沒有看到它。我想一個'解決方案'可能包含一個組件或庫,但這從來沒有在我心中。我再次道歉,如果我做錯了什麼。

告別

+6

呃,爲什麼地球上這個被擱置了?我正在編寫一個答案,解釋OP所稱的'RC_DATA'解決方案實際上並不是Windows特有的,實際上它是Delphi提供的最「跨平臺」的解決方案。這個問題顯然不是要求人們「推薦或找到工具,圖書館或最喜歡的非現場資源」,並且我對五位最終成員中的一位德爾福開發人員認爲這是一個驚喜。 –

+1

@ChrisRolliston剛剛重新提出了這個問題... –

+0

@AndreasNiedermair - 歡呼聲 –

回答

8

遠離你叫什麼「‘RC_DATA’解決方案」是針對Windows的,它實際上是最直接的向前跨平臺的方式Delphi提供。你需要做的是通過Project | Resources and Images ...將這些文件添加到項目中;因爲其他資源類型特定於Windows的,只需堅持每個RCDATA。然後,加載,使用TResourceStream就像你可能在一個VCL應用程序所做的(RT_RCDATASystem.Types聲明):

procedure LoadStringsFromRes(Strings: TStrings; const ResName: string); 
var 
    Stream: TResourceStream; 
begin 
    Stream := TResourceStream.Create(HInstance, ResName, RT_RCDATA); 
    try 
    Strings.LoadFromStream(Stream); 
    finally 
    Stream.Free; 
    end; 
end; 

另外,如果由於某種原因,你要檢查一個給定的資源是否存在試圖加載之前它,System單元實現非Windows平臺的Windows API FindResource函數。

嵌入式資源的替代方法是使用Project | Deployment將文件添加到應用程序包(OS X和iOS)或APK(Android)。雖然這可能被認爲是一種更「原生平臺」的做法,但適當的「遠程路徑」是特定於平臺的......坦率地說,如果一個人如此癡迷於平臺本地化,他們無法處理嵌入式資源,那麼他們就不會成爲擺在首位使用FMX ...


更新:對於現在已被鏈接到,它顯示瞭如何手動寫出一個RES文件,ISN文章如果你不使用IDE的小資源管理器,那麼通常的做法是創建一個RC腳本,並使用Borland或Microsoft資源編譯器進行編譯。

相關問題