gpt4 book ai didi

delphi - AnsiStrIComp 无法比较 Delphi 2010 中的字符串

转载 作者:行者123 更新时间:2023-12-03 15:51:08 25 4
gpt4 key购买 nike

我有点困惑,希望得到启发。

我在这个项目中使用 Delphi 2010,并且尝试比较 2 个字符串。

使用下面的代码失败

if AnsiStrIComp(PAnsiChar(sCatName), PAnsiChar(CatNode.CatName)) = 0 then...

因为根据调试器,仅比较每个字符串的第一个字符(即,如果 sCatName"Automobiles"PAnsiChar(sCatName)“A”)。

我希望能够比较不同语言的字符串,例如英语与日语。

在本例中,我正在寻找匹配项,但我还有其他用于排序等的函数,我需要知道字符串如何比较(小于、等于、大于)。

最佳答案

我假设 sCatNameCatNode.CatName 被定义为 string (= UnicodeStrings)? 。他们应该是。

无需将字符串转换为空终止字符串!您(大多数情况下)只需要在使用 Windows API 时执行此操作。

如果要测试两个字符串是否相等,请使用 SameStr(S1, S2) (区分大小写匹配)或 SameText(S1, S2) (不区分大小写匹配) ),或者在第一种情况下简单地S1 = S2。所有三个选项都会返回 truefalse,具体取决于字符串相等性。

如果您想根据字符的序数值获取数值(如排序),请使用 CompareStr(S1, S2)CompareText(S1, S2) 。它们返回负整数、零或正整数。

(您可能需要使用 Ansi- 函数:AnsiSameStrAnsiSameTextAnsiCompareStrAnsiCompareText;这些函数将使用当前区域设置。非 Ansi- 函数将接受第三个可选参数,明确指定要使用的区域设置。)

更新

请阅读 Remy Lebeau 关于问题原因的评论。

关于delphi - AnsiStrIComp 无法比较 Delphi 2010 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com