【问题标题】:How to use SameText for AnsiStrings in modern Delphi?如何在现代 Delphi 中将 SameText 用于 AnsiStrings?
【发布时间】:2013-09-25 09:16:32
【问题描述】:

我需要比较两个 AnsiString 以查看它们是否具有相同的文本(忽略大小写)。

var
  text1, text2: AnsiString;
begin
  if SameText(text1, text2) then
  ...

在 Unicode 之前的 Delphi 中,我会使用 SameText 函数,但在现代 Delphi 中只有 Unicode 版本,所以我收到这个警告:W1057 Implicit string cast from 'AnsiString' to 'string' on call。

我的问题是,如何在现代 Delphi 中正确比较 AnsiStrings 而不会收到编译器警告(并且不必将两个字符串都强制转换为 UnicodeString(text))

【问题讨论】:

  • IIRC 有一个 ansistrings 或 ansistrutils 单元,其中包含用于 ansi 字符串的函数。 (这台机器上没有 Delphi)
  • 正如@Marjan 所说,there it is。
  • 您应该问自己的问题是,为什么您甚至想要比较两个 AnsiString 变量。
  • @DavidHeffernan:我有一些理由。也许我们可以在聊天中讨论? (德尔福房间中的 AnsiStrings)

标签: delphi unicode string-comparison


【解决方案1】:

确实,有一个 AnsiStrings 模块可以保留所有旧版 AnsStrings 字符串实用程序:)

所以解决方法如下:

uses
  System.AnsiStrings;
...
var
  text1, text2: AnsiString;
begin
  if AnsiStrings.SameText(text1, text2) then
  ...

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 2012-06-01
    • 2013-09-30
    • 1970-01-01
    • 2011-05-12
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多