compareText在比较汉字时,是按照A-Z的顺序比较的吗?
那遇到多音字呢,
我现在用的是TListView的
//ListView排序的回调函数,默认的是快速排序法,也可以自己在这里做算法
function   CustomSortProc(Item1,   Item2:   TListItem;   ParamSort:   integer):   integer;   stdcall;
var   txt1,txt2   :   string;
begin
      if   ParamSort   <>   0   then
      begin
              txt1   :=   Item1.SubItems.Strings[ParamSort   -   1];
              txt2   :=   Item2.SubItems.Strings[ParamSort   -   1];              if   m_bSort   then
              begin
                    Result   :=   CompareText(txt1,txt2);
              end
              else
              begin
                    Result   :=   -CompareText(txt1,txt2);
              end;
      end
      else
      begin
              if   m_bSort   then
              begin
                    Result   :=   CompareText(Item1.Caption,Item2.Caption);
              end
              else
              begin
                    Result   :=   -CompareText(Item1.Caption,Item2.Caption);
              end;
      end;
end;发现排序后,有一些汉字的名字,排在z后边了。不知道为啥?

解决方案 »

  1.   

    ShowMessage(IntToStr(CompareText('丌','朱')))返回结果是2,qi大于zhu为啥啊?
      

  2.   

    这里汉字是按内码排的,而且是作为8位ASCII处理的。
      

  3.   

    可是 ShowMessage(IntToStr(CompareText('於','朱')));也是大于0的数。
    怎么才能让比较后,输出的是顺序的呢?
      

  4.   

    这得用win32 API CompareString。
      

  5.   

    我用了AnsiCompareText就可以了。
    AnsiCompareText和CompareText有啥区别?
      

  6.   

    AnsiCompareText内部调用了CompareString,CompareString支持按照当前区域设置的排序方法。