【问题标题】:Is there any tools/utility to convert "string" to "AnsiString" in pascal source files?是否有任何工具/实用程序可以将 pascal 源文件中的“字符串”转换为“AnsiString”?
【发布时间】:2010-12-21 13:21:32
【问题描述】:

Delphi 2009 及以上版本支持 unicode。我几乎没有希望在 Delphi 2009/2010 以及 Delphi 2007 及更低版本中编译的旧版 pascal 源文件。

替换是一种快速安全的方法

  • 字符串到 AnsiString
  • PChar 到 PAnsiChar
  • 字符转 AnsiChar

是否有任何实用程序可以解析 .pas 文件并进行此类替换?

【问题讨论】:

  • 这可能很快,但肯定不安全。
  • 哎呀!那是/不是/你想做的事情。

标签: delphi unicode


【解决方案1】:

有一个工具可以指出可能需要注意的地方:

http://cc.embarcadero.com/Item/27398

它不会自动转换它,grep 会这样做,但正如 mghie 所说,它并不那么简单。

【讨论】:

    【解决方案2】:

    您可以为此使用sed

    sed -i bak -e "s/string/AnsiString/g" *.pas

    不过,这将是一个非常糟糕的主意。 没有理由您的代码不应该在所有 Delphi 版本中编译。“字符串”的含义已经改变,但那又如何呢?您的 Delphi 2007 代码不需要与您的 Delphi 2009 代码一起使用。 DCU 文件格式不同,因此您必须重新编译您更改的任何内容。

    通过将所有内容更改为 AnsiString,您基本上拒绝了 Delphi 2009 提供的所有新内容。如果这就是您想要做的,您可以通过根本不升级到 Delphi 2009 来为自己节省很多钱。为什么购买产品然后不使用它的任何功能?由于产品中的所有其他内容都是 Unicode,因此您的程序的性能将随着它不断地在字符串格式之间进行转换而下降。您还将淹没在所有转换的编译器警告中。

    不要将方形钉子强行插入圆孔,尤其是当您旁边有一套完美的圆形钉子时。

    【讨论】:

    • 谢谢。我将尝试让我的遗留代码完全升级到 Delphi 2009/2010 并能够使用任何版本的 Delphi 进行编译。
    • 那么你应该尝试的第一件事就是不要改变任何东西。用新的编译器测试你的程序。找出您遇到的实际问题。
    猜你喜欢
    • 2011-03-09
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多