Delphi 如何在调试器中显示TStringList的内容?
我想在调试应用程序时显示TStringList的全部内容。Delphi 如何在调试器中显示TStringList的内容?,delphi,debugging,tstringlist,Delphi,Debugging,Tstringlist,我想在调试应用程序时显示TStringList的全部内容。 相反,我只是得到了指针。Flist仅显示地址。如果您使用的是Delphi 2010或更高版本,调试器允许使用此选项 对于旧版本,可以在监视窗口或使用OutputDebugString转储Text属性的内容,但这很难读取。您可以为列表中的每个元素设置手表,但这仅适用于非常短的列表 我可能会使用像或这样的外部日志应用程序,让您在一次调用中转储TStringList的内容。检查文本属性。这是stringlist的串联版本。我现在使用可视化工具
相反,我只是得到了指针。Flist仅显示地址。如果您使用的是Delphi 2010或更高版本,调试器允许使用此选项 对于旧版本,可以在监视窗口或使用OutputDebugString转储Text属性的内容,但这很难读取。您可以为列表中的每个元素设置手表,但这仅适用于非常短的列表
我可能会使用像或这样的外部日志应用程序,让您在一次调用中转储TStringList的内容。检查文本属性。这是stringlist的串联版本。我现在使用可视化工具,因为我有D2010。我曾经使用一个名为CArray的函数,该函数将返回一个字符串数组。如果我将CArray(MyStringList)添加到watch窗口,我将能够检查字符串列表的内容。我曾经被雇来写VB6代码,我有点喜欢各种“C”函数来转换成有用的类型。用于StringList的CArray和用于ClientDataset的CArray字段对于调试非常有用
function CArray(List: TStrings): TStrArray; Overload;
var i,
iCount: Integer;
begin
iCount := List.Count;
SetLength(Result, iCount);
for i := 0 to Pred(iCount) do Result[i] := List[i];
end;
由于我使用的是BDS MMVI,所以我对这类问题使用了一种“超智能”方法,我将其用于大型xml文档。我启动了上下文文件编辑器(顺便说一下,它是用delphi编写的非常有能力的自由文本编辑器)。在调试器窗口上,只需执行FList.SaveToFile('contents.txt'),因为上下文可以监视文件修改,所以我可以看到xml文件中发生了什么 很抱歉这个“聪明”的笑话,但它确实对我有用 和平我的两分钱: 您可以计算表达式
list\u instance\u variable.SaveToFile('temp\u file\u name.txt')
,然后在任何编辑器中检查文件的内容
为此,您必须在代码中的任何位置使用此函数并关闭优化(至少在Delphi 7中),否则链接器将删除
SaveToFile
的目标代码。在调试模式下,可以计算表达式(FList.Text)以查看整个内容。但是IIRC(现在无法检查)仅当您在调试期间为类型启用函数调用时。@Rudy:这仅适用于手表。在“评估和修改”窗口中,函数(和过程,例如setter)调用总是可能的。我通常有很多手表,很少使用“评估和修改”对话框。我喜欢我的值始终可见。+1您首先回答:)我也使用它,因为它免费且友好,但文件甚至可以在Delphi IDE中打开。新的可视化工具功能很好(更棒的是,您可以编写自己的自定义可视化工具!)。不过,IDE附带的默认TStrings
可视化工具对TStrings内容有一些大小限制。