资源库的软件设计模式?

时间:2009-10-02 14:45:22

标签: delphi resources

是否有任何模式(软件设计模式)用于从资源文件加载图像或消息字符串?

2 个答案:

答案 0 :(得分:4)

模式描述了特定情况的一般解决方案。这是关于更大的结构,而不是单个命令。

从资源文件加载图像或消息字符串归结为简单的命令,即

LoadString (HINSTANCE, UINT, LPTSTR, int)

所以我认为你不会为此找到一个“模式”。

答案 1 :(得分: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,它仍会立即加载:只在必要时从磁盘读取资源。