Delphi XE2中的Tstrings可视化工具仅显示17项
在下面的图片中,我在一个断点上,通过一个TStrings的(196)个元素循环。目前的指数是193 可视化工具仅显示17个元素 对此可以做些什么(除了专门检查元素“x”之外)Delphi XE2中的Tstrings可视化工具仅显示17项,delphi,ide,delphi-xe2,Delphi,Ide,Delphi Xe2,在下面的图片中,我在一个断点上,通过一个TStrings的(196)个元素循环。目前的指数是193 可视化工具仅显示17个元素 对此可以做些什么(除了专门检查元素“x”之外) 据我所知,除了提交功能请求(如果成功升级)之外,您对此无能为力。我猜这是被截断的,就像WarrenP暗示的那样,是被送入可视化工具的数据的大小,而不是TStrings对象中的特定行数。这就是为什么我认为: 假设XE2与更高版本的XE具有相同的示例调试器可视化工具,那么 你可以试试这个: 如果在IDE中安装了Embarcad
据我所知,除了提交功能请求(如果成功升级)之外,您对此无能为力。我猜这是被截断的,就像WarrenP暗示的那样,是被送入可视化工具的数据的大小,而不是TStrings对象中的特定行数。这就是为什么我认为: 假设XE2与更高版本的XE具有相同的示例调试器可视化工具,那么 你可以试试这个:
函数TStringListViewerFrame.Evaluate(表达式:string):string代码>
ResultStr: array[0..4095] of Char;
将4095更改为32767。这样做的目的是确保
字符串可视化工具显示不会因为此缓冲区的大小而被截断,
根据沃伦普的评论。事实上,导致您的
问题似乎在别处
case EvalRes of
求值
,
取决于评估值。对我来说,它总是会回来
长度(结果)
TStringsPagedWindow(输入:TStsrings;Page:Integer):String
,它返回一个TStrings对象的一部分,希望围绕“4k”工作限制,以需要在监视窗口中监视它(而不是TStrings对象本身)为代价,和指定页面值。显然,这并不十分方便,并且需要将TStringsPagedWindow
函数链接到正在调试的可执行文件中TStringsPagedWindow
来填充一个可以显示其内容的GUI对象。这是目前我能想到的最接近WarrenP建议的表达式“既然你可以编写自己的可视化工具,那么你就可以添加这样的箭头,并使用不同的控件来显示内容。”可能需要做很多工作,但我的想法很有趣;如果有兴趣,也许我可以试一试我认为可视化工具的工作方式是,调试器对每个已检查的表达式都有固定的缓冲区大小,您看到的是有多少行适合2k或4k字节,这是调试器中可视化工具功能的一个限制。如果他们添加了一些上下箭头或与之交互的方式,也许他们可以让您可以滚动查看更多数据。@Warren我将在明年检查;-)使用更短的字符串,您可以编写自己的可视化工具,您可以添加这样的箭头,并使用不同的控件显示内容。“正在截断的内容。。。是馈送到可视化工具的数据的大小”-可视化工具本身而不是馈送器决定要检索的数据量。默认的
TStrings
可视化工具(请参见$(BDS)\source\Visualizers\StringListVisualizer.pas
)在评估TStrings
数据时使用固定大小的4K缓冲区。有第三方TStrings
可视化工具可以消除该限制。@RemyLebeau:在这种情况下,在StringListVisualizer.Pas中指定了固定缓冲区大小吗?正如我在回答中所说,在(Xe4版本的)可以明显更改的单元没有任何区别(我尝试将其更改为0..32767或两者之间的任何值)-参见第4点-但没有避免4k截断。TStrin中有一个固定的缓冲区
if not FDeferredError then
Copy(Result, Length(Result) - 100, Length(Result))