是否有任何模式(软件设计模式)用于从资源文件加载图像或消息字符串?
答案 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,它仍会立即加载:只在必要时从磁盘读取资源。