人们会相信,看看名称,SysUtils(Delphi XE)中定义的AnsiSameText将接收ANSI字符串作为参数,但函数定义如下:
function AnsiSameText(const S1, S2: string): Boolean
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
在AnsiStrings单元中有一个ANSI函数,但为什么这个(在Sysutils中)称为'ansi'?
Dav*_*nan 11
在旧版本的Delphi中,在Unicode之前,有两组字符串比较函数:
SameText,CompareText等,这些执行的比较的是忽略区域设置.AnsiSameText,AnsiCompareText等等.这些进行比较的是把区域考虑.引入Unicode时,这些操作的函数string现在可以在UTF-16数据上运行.为了向后兼容,它们保留相同的名称,并以相同的方式运行.这SameText不是区域设置,但AnsiSameText确实如此.
因此,虽然这些名称具有误导性,但Ansi前缀只是表示该函数可以识别语言环境.对于它的价值,在我看来,Ansi即使在Unicode前的Delphi中前缀也很差.
区域设置很重要的原因是不同的区域设置对字母排序有不同的规则.