gpt4 book ai didi

delphi - 为什么 AnsiSameText 不是 ANSI?

转载 作者:行者123 更新时间:2023-12-03 15:19:05 24 4
gpt4 key购买 nike

从名字上看,人们会相信 SysUtils (Delphi XE) 中定义的 AnsiSameText 将接收 ANSI 字符串作为参数,但该函数的定义如下:

function AnsiSameText(const S1, S2: string): Boolean

我在这里缺少什么?
AnsiStrings 单元中有一个 ANSI 函数,但为什么这个函数(在 Sysutils 中)被称为“ansi”?

最佳答案

在旧版本的 Delphi(Unicode 之前)中,有两组字符串比较函数:

  • SameTextCompareText 等。这些执行的比较忽略区域设置。
  • AnsiSameTextAnsiCompareText 等。这些执行的比较考虑了区域设置。

引入 Unicode 后,这些对字符串进行操作的函数现在对 UTF-16 数据进行操作。为了向后兼容,它们保留相同的名称,并以相同的方式运行。也就是说,SameText 不考虑区域设置,但 AnsiSameText 会考虑。

因此,虽然名称具有误导性,但 Ansi 前缀只是表明该函数具有区域设置感知能力。无论如何,在我看来,即使在 Unicode 之前的 Delphi 中,Ansi 前缀也很差。

区域设置很重要的原因是不同的区域设置对于字母排序有不同的规则。

关于delphi - 为什么 AnsiSameText 不是 ANSI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23444579/

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