procedure LoadRES(RESName: string);
var
  hRes: THandle;
  pRes: pointer;
  Loader: TStrings;
begin  Loader := TStringList.Create;
  Loader.Clear;
  hRes := FindResource(hInstance, pchar(RESName), 'TXT');
  hRes := LoadResource(hInstance, hRes);
  pRes := LockResource(hRes);  Loader.Text := pchar(pRes);
  
    ShowMessage(Loader.Text)   // d2010 显示 乱码   UnLockResource(hRes);
  FreeResource(hRes);
end;
.rc  内容 如下 CNMarc TXT CNMarc.txt
USMarc TXT USMarc.txt不知道是哪里的原因 难道是pchar 

解决方案 »

  1.   

    string改为ansistring,pchar改为pansichar,2010都是unicode编码
      

  2.   

    string改为ansistring,pchar改为pansichar,2010都是unicode编码
      

  3.   

    unicode問題:string改為ansistring;
    pchar改為pansichar;
      

  4.   

    问题 解决了  Loader.Text := pansichar(pRes);  改了即可 但是  有个 pos问题  不知 是否是 d2010  bug
    procedure TForm2.Button1Click(Sender: TObject);
    var
      str: AnsiString;
    begin
      str := '中华人民共和国';
      ShowMessage('长度:' + IntToStr(Length(str))); 
      ShowMessage('位置:' + IntToStr(AnsiPos('民', str))); // 换为pos还是返回4
    end;
    摘自 网上http://blog.csdn.net/sunstone/archive/2009/10/22/4711487.aspx
      

  5.   

    在 delphi2010 里,默认是 UNICODE 开启编译的。
    Delphi 只是一个工具,遇到 bug 自己动手解决才是正途,
    自己写一个函数也是一样:procedure TForm1.Button1Click(Sender: TObject);
      function AnsiPos(const Substr, S: Ansistring): Integer;
      var
        P: PAnsiChar;
      begin
        Result := 0;
        P := AnsiStrPos(PAnsiChar(S), PAnsiChar(Substr));
        if P <> nil then
          Result := Integer(P) - Integer(PAnsiChar(S)) + 1;
      end;var
      i: Integer;
    begin
      i := AnsiPos('民', '中华人民共和国');
      ShowMessage(IntToStr(i)); //不再是 4,显示为 7
    end;
      

  6.   

    TStringList.Create(  看下这里是不是有个编码可以设置 )