不能。只有在确认 CompareStringOrdinal 调用成功、返回值非零之后,才能继续判断两段文字的大小关系;判断相等应明确核返回是否为CSTR_EQUAL,非零本身不等于“相等”,0 也不是“相等”或“小于”,而是调用失败。把这几个分支分开,结论才站得住。

AI台式电脑工作台示意图
AI台式电脑维护示意图,非真实门店、技师或客户实拍。

适用条件上,这里讨论的是 Win32 CompareStringOrdinal 的 ordinal 二进制比较,不是语言学意义上的文字等同。调用时应保留原字符串、实际长度以及 bIgnoreCase 参数;比较只覆盖这一次传入的内容和参数组合,不能拿一次结果推断其他编码、其他长度或其他大小写设置下的关系。bIgnoreCase 按已核验边界只有数值 1 作为 TRUE,并使用 Windows 大写表;不要把它扩大成完整的语言学大小写折叠。

实际观察返回值时,先判 0。若返回 0,进入调用失败分支,记录失败并停止后续比较判断,不能继续减 2。只有确认返回值非零且调用成功后,才把成功返回的小于、等于、大于三类,减去 2 映射为 C 运行库习惯的小于 0、等于 0、大于 0。顺序不能反:先减 2 会让 0 变成 -2,看起来像“小于”,把失败伪装成有效比较结果。

风险主要来自三处:把任何非零都当相等,可能错误合并或删除文件;在失败分支先做减 2 映射,可能把失败误判成大小关系;只凭肉眼相似、同形字符或显示效果相同就认定相等,也缺少 ordinal 比较依据。两段文字看起来接近,不等于二进制比较相等;忽略大小写时也要记住使用的是 Windows 大写表,而不是所有语言规则。

下一步,准备复现或排查时,应把返回值、原字符串、实际长度、bIgnoreCase 取值和失败分支一起记录;先确认成功,再做减 2 映射,并分别处理小于、等于、大于。比较过程出现错误时,不要据此批量合并、改名或删除文件,更不要把视觉相似当证明。

浦东新区台式电脑用户可拨400-877-9605,先整理比较返回、实际长度与bIgnoreCase参数。电脑快修网提供信息展示与第三方维修对接,具体地址、电脑侧检查是否支持及安排需当次核实,启用范围不代表即时履约。