如何在调试器中显示TStringList的内容?

时间:2011-08-15 16:21:26

标签: delphi debugging tstringlist

我想在调试应用程序时显示TStringList的全部内容。 相反,我只是得到指针。 Flist仅显示地址。

5 个答案:

答案 0 :(得分:7)

如果您使用的是Delphi 2010或更高版本,调试器可以使用debug visualizers进行此操作。

对于旧版本,您可以在Watch窗口中或使用OutputDebugString转储Text属性的内容,但这很难阅读。您可以为列表中的每个元素设置监视,但这仅适用于非常短的列表。

我可能会使用像CodeSiteSmartInspect之类的外部日志记录应用程序,它允许您在一次调用中转储TStringList的内容。

答案 1 :(得分:4)

检查Text属性。它是stringlist的连接版本。

答案 2 :(得分:3)

由于我正在使用BDS MMVI,我正在使用“超聪明的智能”方法来解决这类问题,我将它用于大型xml文档。我启动上下文文件编辑器(顺便说一下,在delphi中编写非常强大的自由文本编辑器)。在调试器窗口上,只需执行FList.SaveToFile('contents.txt'),因为上下文可以监视文件修改,我可以看到我的xml文件中发生了什么。

对于“聪明”的笑话感到抱歉,但这对我有用。

和平

答案 3 :(得分:2)

我现在使用可视化器,我有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;

答案 4 :(得分:2)

我的两分钱:

您可以评估表达式list_instance_variable.SaveToFile('temp_file_name.txt'),然后在任何编辑器中检查文件的内容。

为此,您必须在代码中的任何位置使用此函数并关闭优化(至少在Delphi 7中),否则链接器将删除SaveToFile的目标代码。