stringlist的排序是按照单字节还是按照双字节排的?
比如两个字符串:
'ab '和'ab'一个后边是空格,一个后边是,十六进制分别为20和01。
排序的结果为:
ab
ab (后有空格)'ab '和'aba',十六进制分别为61 62 20和61 62 01 61
排序的结果为:
ab (后有空格)
aba谁解释一下原因?在excel中也是如此。
比如两个字符串:
'ab '和'ab'一个后边是空格,一个后边是,十六进制分别为20和01。
排序的结果为:
ab
ab (后有空格)'ab '和'aba',十六进制分别为61 62 20和61 62 01 61
排序的结果为:
ab (后有空格)
aba谁解释一下原因?在excel中也是如此。
解决方案 »
- delphi语句实现导出excel表,其中同一列中相同单元格自动合并
- 安装了Fast Report 报表控件,不支持XE,删除重新安装出现错误
- 窗体继承时的问题,大家帮个小忙啊。
- 一个自定义消息的问题
- 一个老问题!
- 提个有难度的问题!关于sendmessage以及进程之间执行顺序的。
- 如何在应用服务器端增加自定义函数
- 如何刪除??
- 大家帮忙看哈!!
- 致命错误Program or unit 'wen' recursively uses itself 程序或单元递归,错误该怎么办?代码如下
- NMFTP程序如何改IDFTP程序,就一段,哪位哥哥帮帮忙?
- 提交这个页面的表单 http://www.mirdy.cn/add.asp?action=sfadd
'ab'
'ab '
'ab '
但实际上是:
'ab'
'ab '
'ab '的十六进制ANSI编码为01,最小的。
哪位高手解释一下?顺便说一下,我想找一个可以排到空格之前的字符,发现只要能够显示出来的,都会排到空格之后(前提是前后都有字符,前面的相同,如果单排这两个字符,就会按ANSI编码排列),才发现这个现象,不能明白。
比较函数是采用的WINNT的函数CompareStringA
function CompareString; external kernel32 name 'CompareStringA';于是,要怪就怪微软吧。
AnsiCompareText('ab c','ab'#$01'c')
返回-1AnsiCompareText的实现:
function AnsiCompareText(const S1, S2: string): Integer;
begin
Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(S1),
Length(S1), PChar(S2), Length(S2)) - 2;
end;