我有这个问题,如果我在Delphi中检查一个字符串,它始终以{L并以另一个结束}
因此,举个例子,我创建了一个变量 tempStr ,它是一个字符串。我执行以下代码:
tempStr := 'hello';
当我在下一行放置一个断点并停在那里检查 tempStr 时,将显示黄色的Delphi检查窗口
{L"he"}
最近在最近两周内开始发生这种情况。我正在研究java到delphi的protobufs。起初我以为它正在发生,因为我正在向指针传递一个指针,该指针用随机字符填充我的一些变量但我已经转移到另一个具有不同代码的项目,我仍然得到这个检查问题。
编辑:我的例子错了,这个问题最终会切断我的任何字符串的最后3个字符,基本上是{L}占用的字符数量。我编辑了上面的例子来准确显示我在检查时看到的内容。
就德尔福插件而言,我有: DDev Extensions 2.83,CodeSiteExpress 5.1,Fast Report 4和Mad除4.0.11
答案 0 :(得分:2)
检查员只是向您展示字符串内容是Unicode而不是Ansi。但它用C ++语法向您展示的事实使我认为可能安装了一个自定义Debugger Visualizer来覆盖默认的字符串检查器。默认检查器看起来像这样:
进入调试器的Visualizer settings(工具>选项>调试器选项>展示台)并检查是否注册并启用了额外的可视化工具。 IDE预装了仅3个默认可视化器:
您所描述的内容听起来像是自定义可视化工具正在操纵具有不同字符的默认检查器文本缓冲区。
答案 1 :(得分:1)
根据 Warren P 的建议,我尝试完全取消注册C ++调试可视化工具包。
在(工具>选项>调试器选项>展示台)中,这是:
std::string and std::wstring Visualizer for C++
在我打包未注册后,我注意到我的问题已修复。我不确定这个包裹到底是做什么的,所以我不想让它被禁用。然后我重新启动了Delphi,程序包仍然被禁用,再次启动Delphi后我重新启用了程序包。一切似乎现在都在运作,问题得到解决。因此解决方案是禁用并重新启用此可视化程序包。
答案 2 :(得分:0)
我也没有通过任何建议解决这个问题。在包含大量包的项目中,有一个或两个BPL总是以{L"他"}样式显示。这些包都有关于隐式导入单元的编译器警告。解决这些问题使得字符串能够在调试器中正确显示。