Delphi字符串比较函数有什么区别?
有很多方法可以比较现代Delphi中的字符串(比如2010-XE3):
>’< ='运算符,解析为UStrCmp / LStrCmp 原则上,有人可以给出(或指向)这些方法的描述吗? 到目前为止,我已经认为AnsiCompareStr在Windows上调用CompareString,这是一种“文本”比较(即考虑到unicode组合字符等).简单的CompareStr没有这样做,似乎做了二进制比较. 但是CompareStr和UStrCmp有什么区别?在UStrCmp和LStrCmp之间?它们都产生相同的结果吗?这些结果是否会在Delphi版本之间发生变化? 我问,因为我需要进行比较,这将始终产生相同的结果,因此使用一个版本的Delphi构建的应用程序中的索引与使用另一个版本构建的代码保持一致. 解决方法
AnsiCompareStr被指定为考虑区域设置,并且无论Delphi版本如何都应返回相同的结果,但可能会根据Windows版本和/或设置返回不同的结果.
CompareStr是纯二进制比较:“比较操作基于16每个字符的-bit序数值,不受当前语言环境的影响“(对于CompareStr(const S1,S2:string)重载).
UStrCmp也使用纯二进制比较:“根据构成字符串的字符的序数值来比较字符串.”所以后两者之间不应该有区别.它们返回结果的方式是不同的,因此需要两个实现(尽管可以使一个依赖于另一个).
至于LStrCmp和UStrCmp之间的区别,LStrCmp采用AnsiStrings,UStrCmp采用UnicodeStrings.两个字符(假设A和B)完全有可能在错误命名的“ANSI”代码页中被排序为A< B,但以Unicode排序为A> B.您几乎应该始终只使用适合您所拥有数据的比较. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |