如题,widestring到string的转换
急。。

解决方案 »

  1.   

    :Converts Unicode string to Ansi string using specified code page.
      @param   ws       Unicode string.
      @param   codePage Code page to be used in conversion.
      @returns Converted ansi string.
    }function WideStringToString(const ws: WideString; codePage: Word): AnsiString;
    var
      l: integer;
    begin
      if ws = ' then
        Result := '
      else 
      begin
        l := WideCharToMultiByte(codePage,
          WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
          @ws[1], - 1, nil, 0, nil, nil);
        SetLength(Result, l - 1);
        if l > 1 then
          WideCharToMultiByte(codePage,
            WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
            @ws[1], - 1, @Result[1], l - 1, nil, nil);
      end;
    end; { WideStringToString }
    {:Converts Ansi string to Unicode string using specified code page.
      @param   s        Ansi string.
      @param   codePage Code page to be used in conversion.
      @returns Converted wide string.
    }
    function StringToWideString(const s: AnsiString; codePage: Word): WideString;
    var
      l: integer;
    begin
      if s = ' then
        Result := '
      else 
      begin
        l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), - 1, nil, 0);
        SetLength(Result, l - 1);
        if l > 1 then
          MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]),
            - 1, PWideChar(@Result[1]), l - 1);
      end;
    end; { StringToWideString }
      

  2.   

    试了下不行呀,我是读XML文件,返回的Text是widestring的,然后原来事先存放在TStringList里的是一般的字符串我直接Add('Entrust');
    然后XML读出来的在TStringlist里搜 发现搜不到
      

  3.   

    放到TStringList里搜不到?你把TStringList里的内容放到Listbox中显示出来看看
      

  4.   

    这个codePage: Word是什么东西
    输入的时候输入什么?