为什么我的Delphi 2010资源dll文件是ANSI编码的

时间:2015-08-24 22:42:54

标签: delphi localization translation delphi-2010

我使用Delphi 2010中的资源DLL向导为我的程序生成资源只有dll。当我使用Notepad ++查看它们时,它们似乎正在使用ANSI编码。我错过了一些设置吗?似乎unicode程序不应该将它的资源存储在ANSI中,特别是对于亚洲语言。

我专门研究了TABOUTBOX RT_RCDATA记录。我尝试使用以下代码

加载它
procedure LoadFromResFile(const FileName: string);
var
  LibHandle: THandle;
  ResourceLocation: HRSRC;
  ResourceSize: dword;
  ResourceHandle: THandle;
  ResourcePointer: pointer;
  ResStr: string;
begin
  LibHandle := LoadLibraryEx(PWideChar(FileName), 0, LOAD_LIBRARY_AS_DATAFILE or LOAD_LIBRARY_AS_IMAGE_RESOURCE);
  if LibHandle > 0 then
  begin
    ResourceLocation := FindResource(LibHandle, 'TABOUTBOX', RT_RCDATA);
    ResourceSize := SizeofResource(LibHandle, ResourceLocation);
    ResourceHandle := LoadResource(LibHandle, ResourceLocation);
    ResourcePointer := LockResource(ResourceHandle);
    if ResourcePointer <> nil then
    begin
      SetLength(ResStr, ResourceSize);
      CopyMemory(@ResStr[1], ResourcePointer, ResourceSize);
      FreeResource(ResourceHandle);
    end;
    FreeLibrary(LibHandle);
  end else
  begin
    ResStr := SysErrorMessage(GetLastError);
    ShowMessage(ResStr);
  end;

我有垃圾,但当我将ResStr的类型更改为AnsiString时,它显示正确。在Notepad ++中打开文件我可以看到对话框资源似乎是ansi,包括标签标题。

0 个答案:

没有答案