Delphi 检查显示 {L 在所有字符串的开头

Delphi inspect shows {L at start of all Strings

我有这个问题,如果我检查 Delphi 中的字符串,它总是以 {L 开头并以另一个 }

结尾

举个例子,我创建了一个字符串变量 tempStr。我执行以下代码:

tempStr := 'hello';

当我在下一行放置一个断点并停在那里检查 tempStr 黄色 Delphi 检查 window 将显示

{L"he"}

最近两周内开始出现这种情况。我正在为 java 到 delphi 开发 protobufs。起初我以为它正在发生,因为我将一个指针传递给一个用随机字符填充我的一些变量的指针,但我已经转移到另一个具有不同代码的项目并且我仍然遇到这个检查问题。

编辑:我的例子是错误的,这个问题最终切断了我的任何字符串的最后 3 个字符,基本上是 {L} 占用的字符数。我已经编辑了上面的示例以准确显示我在检查时看到的内容。

就 Delphi 插件而言,我有:DDev Extensions 2.83、CodeSiteExpress 5.1、Fast Report 4 和 Mad Except 4.0.11

检查器只是向您展示字符串内容是 Unicode 而不是 Ansi。但它以 C++ 语法向您展示的事实让我认为可能安装了一个自定义的 Debugger Visualizer 来覆盖默认的字符串检查器。默认检查器看起来像这样:

进入调试器的 Visualizer settings(工具 > 选项 > 调试器选项 > 可视化工具)并检查是否注册并启用了额外的可视化工具。 IDE 仅预装了 3 个默认可视化工具:

您的描述听起来可能是自定义可视化工具正在使用不同字符操纵默认检查器文本缓冲区。

根据 Warren P 的建议,我尝试完全取消注册 C++ 调试可视化程序包。

在(工具 > 选项 > 调试器选项 > 可视化工具)中,这是:

std::string and std::wstring Visualizer for C++

取消注册此打包后,我发现我的问题已解决。我不确定这个包到底做了什么,所以我不想禁用它。然后,我重新启动 Delphi 并仍然禁用该程序包,并在再次启动 Delphi 时重新启用该程序包。现在似乎一切正常,问题已解决。所以解决方案是禁用并重新启用此可视化程序包。

我也遇到过这个问题没有被给出的任何建议解决。在一个包含大量包的项目中,有一两个 BPL 总是以 {L"he"} 样式显示。这些包都有关于隐式导入单元的编译器警告。解决这些问题使字符串能够在调试器中正确显示。