2009-10-02 3 views

답변

4

패턴은 특정 상황에 대한 일반적인 해결책을 설명합니다. 그것은 하나의 명령에 관한 것이 아니라 더 큰 구조에 관한 것입니다. 리소스 파일에서

로드 이미지 나 메시지 문자열은 간단한 명령으로 귀결 즉

LoadString (HINSTANCE, UINT, LPTSTR, int) 

그래서 당신이에 대해 "패턴"을 찾을 수 있다고 생각하지 않습니다.

+0

다국어 지원이 가능한 더 큰 프로젝트를 생각해보십시오. – Pavan

+4

Pavan, 프로젝트의 크기에 관계없이 리소스 파일에서 물건을로드하기위한 "패턴"은 항상 "리소스로드"입니다. 그 위에 다른 추상화를 쌓을 수 있지만 패턴을 변경하지는 않습니다. 분명히, 패턴은 당신이 찾고있는 것이 아닙니다. 어쩌면 당신은 "모범 사례"또는 "숙어"에 대해 묻고있을 것입니다. –

1

1. 텍스트 자원

텍스트 자원을 사용하려면, 더 간단한 텍스트를 저장할 수는 resourcestring 구현하는 것입니다 :

resourcestring 
    sMsgHello = 'Hello world'; 

begin 
    ShowMessage(sMsgHello); // will be loaded from resource 
end; 

자원에서 일정한 부하로 sMsgHello으로 생각하십시오. 기본적으로 코드에 작성된 텍스트가 포함됩니다.

텍스트가 소스 코드에서 정의되지 않은 경우 LoadResString() Delphi 함수 또는 LoadString() API를 호출 할 수 있습니다.

2. 기타 자원 텍스트가 아닌 자원에 대한

은 가장 간단 TResourceStream을 사용하는 것입니다

var 
    RS: TStream; 
    s: string; 
begin 
    RS := TResourceStream.Create(HInstance,'ResName','TXT'); 
    try 
    SetString(s,PChar(RS.Memory),RS.Size); 
    Memo.Text := s; 
    finally 
    RS.Free; 
    end; 
end; 

자원은 매우 강력 할 수있다. find here ZIP을 리소스로 포함시킨 다음 필요한 경우 내부 압축 파일을 읽을 수 있습니다. 리소스는 exe 내에서 메모리 매핑되므로 요청시에만 메모리에로드됩니다. 내부에 많은 리소스가있는 거대한 exe를 가질 수 있습니다. 즉, 즉시로드됩니다. 필요할 때만 리소스가 디스크에서 읽혀집니다.