2014-01-22 6 views
6

Delphi XE5 FireMonkey (Android) 모바일 응용 프로그램에 사용자 정의 정적 데이터를 저장해야합니다. 나는 웹상에서 'RC_DATA'솔루션을 보았지만 윈도우와 관련이있다. 크로스 플랫폼 솔루션이 필요합니다. http://delphidabbler.com/articles?article=2Delphi FireMonkey 응용 프로그램 내부에 데이터 저장

코드 샘플의 주석이 읽습니다 : 여기

내가 발견 한 RC_DATA 솔루션입니다 // 자원 유형 - RT_RCDATA을 (윈도우 장치에서)

나는이 댓글에서 결론을 내렸다 내부 코드 Windows 단위는 Windows에 따라 다릅니다. 그렇지 않은 경우 사과드립니다.

크리스는 실제로 플랫폼 간이라고 말했기 때문에 나는 그것을 시도 할 것입니다. 크리스. 고마워.

구성 요소 또는 라이브러리를 요청하는 것과 관련하여 필자는 내 질문을 읽고 다시 읽었으므로 표시되지 않습니다. 나는 '솔루션'이 구성 요소 또는 라이브러리를 포함 할 가능성이 있다고 생각하지만 그건 결코 내 마음에 들지 않습니다. 다시 한 번 잘못된 점을 사과드립니다.

이별이

+6

Urgh, 왜 지구상에 이것이 보류되어 있습니까? 나는 OP가 'RC_DATA'솔루션으로 언급하는 것이 사실 Windows가 아니며 실제로 델파이가 제공하는 가장 '크로스 플랫폼'솔루션이라고 설명하는 답변을 작성하는 중이었습니다. 이 질문은 분명히 사람들에게 '도구, 도서관 또는 좋아하는 오프 사이트 리소스를 추천하거나 찾도록 요청하지는 않습니다.'라고 말했고, 5 명의 폐쇄 자 중 한 명의 델피 개발자가 그렇게 생각한다고 놀랐습니다. –

+1

@ChrisRolliston이 질문을 다시 열었습니다 ... –

+0

@AndreasNiedermair - 건배 –

답변

8

멀리 당신이 Windows 관련이되는 ' "RC_DATA"솔루션'이라고 부르는에서, 실제로 델파이가 제공하는 대부분의 직선 전방 크로스 플랫폼 방법입니다. Project | Resources and Images ...를 통해 프로젝트에 파일을 추가하면됩니다. 다른 리소스 유형 인 으로 Windows마다 다르므로 각각에 대해 RCDATA를 고수하십시오. 어떤 이유로로드하기 전에 주어진 자원이 있는지 여부를 확인하려면,

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; 

또한 : 당신이 (RT_RCDATASystem.Types에 선언)을 VCL 애플리케이션에서 수행했을 수도처럼 그런 다음,로드, TResourceStream를 사용 이 경우 System 장치는 비 Windows 플랫폼 용 Windows API FindResource을 구현합니다.

임베디드 리소스의 대안은 Project | Deployment를 사용하여 애플리케이션 번들 (OS X 및 iOS) 또는 APK (Android)에 파일을 추가하는 것입니다. 이것은 "플랫폼 고유"방식으로 간주 될 수 있지만, 적절한 '원격 경로'는 플랫폼에 따라 다릅니다 ... 솔직히 말해서, 사람이 플랫폼에 고유 한 것으로 집착하면 임베디드 자원을 처리 할 수 ​​없습니다 , 그들은 ... 처음에 FMX를 사용하지 않을 것


업데이트 : 지금, 잘못되고있는 수동 RES 파일을 작성하는 방법을 보여주는 것에 링크 된 기사에 관하여 사람이 일반적으로하는 일 - IDE의 작은 리소스 관리자를 사용하지 않는다면 일반적인 방법은 RC 스크립트를 만들고 Borland 또는 Microsoft 리소스 컴파일러로 컴파일하는 것입니다.

관련 문제