The*_*ven 3 delphi string unicode delphi-2010
我有点困惑,希望得到启发.
我正在为这个项目使用Delphi 2010,我正在尝试比较2个字符串.
使用以下代码失败
if AnsiStrIComp(PAnsiChar(sCatName), PAnsiChar(CatNode.CatName)) = 0 then...
Run Code Online (Sandbox Code Playgroud)
因为根据调试器,只比较每个字符串的第一个字符(即,sCatName是"Automobiles",PAnsiChar(sCatName)是"A").
我希望能够比较可能使用不同语言的字符串,例如英语和日语.
在这种情况下,我正在寻找匹配,但我有其他功能用于排序等,我需要知道字符串如何比较(小于,等于,大于).
我假设sCatName并CatNode.CatName定义为strings(= UnicodeStrings)?他们应该是.
没有必要将字符串转换为以null结尾的字符串!您(大多数时候)只需要在使用Windows API时进行此操作.
如果要测试两个字符串的相等性,请使用SameStr(S1, S2)(区分大小写的匹配)或SameText(S1, S2)(不区分大小写的匹配),或者仅S1 = S2使用第一种情况.所有三个选项都返回true或false取决于字符串相等.
如果你想根据字符的序数值得到一个数值(如在排序中),那么使用CompareStr(S1, S2)或CompareText(S1, S2).它们返回负整数,零或正整数.
(您可能需要使用Ansi-的功能:AnsiSameStr,AnsiSameText,AnsiCompareStr,和AnsiCompareText;这些功能将使用当前区域设置非.Ansi-功能将接受第三个可选参数,明确指定要使用的语言环境.)
请阅读Remy Lebeau关于问题原因的评论.