delphi 的comparetext比较汉字?

虎滴小猪猪 2010-05-28 03:18:16
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后边了。不知道为啥?
...全文
370 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
AnsiCompareText内部调用了CompareString,CompareString支持按照当前区域设置的排序方法。
虎滴小猪猪 2010-05-28
  • 打赏
  • 举报
回复
我用了AnsiCompareText就可以了。
AnsiCompareText和CompareText有啥区别?
  • 打赏
  • 举报
回复
这得用win32 API CompareString。
虎滴小猪猪 2010-05-28
  • 打赏
  • 举报
回复
可是 ShowMessage(IntToStr(CompareText('於','朱')));也是大于0的数。
怎么才能让比较后,输出的是顺序的呢?
  • 打赏
  • 举报
回复
这里汉字是按内码排的,而且是作为8位ASCII处理的。
winstonbonaparte 2010-05-28
  • 打赏
  • 举报
回复
'丌'這個字不認識吧
虎滴小猪猪 2010-05-28
  • 打赏
  • 举报
回复
ShowMessage(IntToStr(CompareText('丌','朱')))

返回结果是2,qi大于zhu为啥啊?
虎滴小猪猪 2010-05-28
  • 打赏
  • 举报
回复
别啊,解释下再走啊,
zhuoguihu 2010-05-28
  • 打赏
  • 举报
回复
飘过,拿分,走人

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧