我想在调试应用程序时显示 TStringList 的全部内容。相反,我只是得到指针。Flist 仅显示地址。
5 回答
如果您使用的是 Delphi 2010 或更高版本,调试器允许使用调试可视化器进行此操作。
对于旧版本,您可以在 Watch 窗口中转储 Text 属性的内容或使用 OutputDebugString,但这很难阅读。您可以为列表的每个元素设置监视,但这仅适用于非常短的列表。
我可能会使用像CodeSite或SmartInspect这样的外部日志记录应用程序,它可以让您在一次调用中转储 TStringList 的内容。
检查文本属性。它是字符串列表的串联版本。
由于我正在使用 BDS MMVI,我正在使用“超聪明”的方法来解决这类问题,我将它用于大型 xml 文档。我启动上下文文件编辑器(顺便说一句,用delphi编写的非常强大的自由文本编辑器)。在调试器窗口上,只需执行 FList.SaveToFile('contents.txt'),因为上下文可以监视文件修改,我可以看到我的 xml 文件中发生的事情。
对不起“聪明”的笑话,但它确实对我有用。
和平
有了 D2010,我现在使用可视化工具。我曾经使用一个名为 CArray 的函数,它会返回一个字符串数组。如果我将 CArray(MyStringList) 添加到监视窗口,我将能够检查字符串列表的内容。我曾经受雇编写 VB6 代码,我有点喜欢将各种“C”函数转换为有用的类型。用于字符串列表的 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;
我的两分钱:
您可以评估表达式list_instance_variable.SaveToFile('temp_file_name.txt')
,然后在任何编辑器中检查文件的内容。
为此,您必须在代码中的任何位置使用此函数并关闭优化(至少在 Delphi 7 中),否则SaveToFile
链接器将删除目标代码。