我有点困惑,希望得到启发。
我正在使用Delphi 2010进行此项目,我正在尝试比较2个字符串。
使用以下代码失败
if AnsiStrIComp(PAnsiChar(sCatName), PAnsiChar(CatNode.CatName)) = 0 then...
因为根据调试器,只比较每个字符串的第一个字符(即如果sCatName
是"Automobiles"
,PAnsiChar(sCatName)
是"A"
)。
我希望能够比较可能使用不同语言的字符串,例如英语与日语。
在这种情况下,我正在寻找一个匹配,但我有其他函数用于排序等,我需要知道字符串如何比较(小于,等于,大于)。
答案 0 :(得分:5)
我认为sCatName
和CatNode.CatName
被定义为string
s(= UnicodeString
s)?他们应该是。
无需将字符串转换为以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关于问题原因的评论。
答案 1 :(得分:0)
简单sCatName=CatNode.CatName
怎么样?如果它们是strings
则应该有效。